PromiseKit / CoreLocation

Promises for Swift & ObjC
http://promisekit.org
MIT License
30 stars 29 forks source link

AppClip doesn't support requestAlwaysAuthorization for Location #34

Open Vicky-CTO opened 3 years ago

Vicky-CTO commented 3 years ago

Issue

Appstore rejects the AppClip with Promisekit due to it's usage of requestAlwaysAuthorization in AuthorizationCatcher.

ITMS-90842: Invalid SDK usage - App clip 'AppClip.app' uses the SDK selector 'requestAlwaysAuthorization', which is not supported. Ensure your app clip is using supported SDK features.

Steps to Reproduce

Xcode: 12.5 Minimu iOS Version Supported: 12+ PromiseKit: 6.15.3 Cocoapods: 1.10.1

  1. Create an appclip target using the following steps.
  2. Add the AppClip target to Podfile and let it use the PromiseKit.
  3. Build and submit the app with AppClip to AppStore.
  4. You will receive the email with above issue ITMS-90842: Invalid SDK usage.

    Recommended Fix

    In initialiser of AuthorizationCatcher, update ask(type:) to use APPCLIP macro which needs to be defined for AppClip targets.

            switch type {
            case .always:
            #if os(tvOS) || APPCLIP
                fallthrough
            #else
                requestAlwaysAuthorization()
            #endif
            case .whenInUse:
                requestWhenInUseAuthorization()
            }
Vicky-IAG commented 2 years ago

@mxcl Apple doesn't provide one yet but their suggested approach is to use Active Compilation Condition build setting (for example, APPCLIP). Refer Use Active Compilation Conditions

My suggestion is to let the developers declare it in podfile for AppClip target in podfile.

post_install do |installer_representation|
  installer_representation.project.targets.each do |target|
    if target.name == "PromiseKit/CoreLocation"
      target.build_configurations.each do |config|
          config.build_settings['SWIFT_ACTIVE_COMPILATION_CONDITIONS'] ||= ['$(inherited)', 'APPCLIP=1']
      end
    end
  end
end
zeusent commented 1 year ago

Any news about this being fixed?

mxcl commented 1 year ago

The fix is waiting on someone like you @zeusent! Seems easy enough, but I am so out the loop in iOS dev I really cannot do it.