mxcl / PromiseKit

Promises for Swift & ObjC.
MIT License
14.22k stars 1.45k forks source link

AppClip doesn't support requestAlwaysAuthorization for Location #1244

Open Vicky-IAG opened 3 years ago

Vicky-IAG 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()
            }
mxcl commented 3 years ago

Hmm, seems strange Apple wouldn’t provide an #if environment(AppClip) or something like that. Can we find one? I could not but don’t have a lot of time for this.

Refs https://github.com/PromiseKit/CoreLocation/issues/34