11

Xcode (ベータ 11.0 ベータ 6) を使用して Apple でサインインをセットアップしようとしています。

シミュレーターでは問題なく動作しますが、iPhone (iOS 13.1) で実行すると、同じ表示が得られません。

シミュレーター:

シミュレーターで

iPhone の場合:

iPhoneの場合

これは、「Apple でサインイン」と呼ぶ方法です。

- (IBAction)signInWithApple:(id)sender {
    if (@available(iOS 13.0, *)) {
        ASAuthorizationAppleIDProvider *appleIDProvider = [[ASAuthorizationAppleIDProvider alloc] init];
        ASAuthorizationAppleIDRequest *request = [appleIDProvider createRequest];
        request.requestedScopes = @[ASAuthorizationScopeFullName,ASAuthorizationScopeEmail];
        ASAuthorizationController *authorizationController = [[ASAuthorizationController alloc] initWithAuthorizationRequests:@[request]];
        authorizationController.delegate = self;
        authorizationController.presentationContextProvider = self;
        [authorizationController performRequests];
    } else {
        // Fallback on earlier versions
    }
}

私のデバッグに基づいて、どちらの場合もコードが実行され、電子メール + フルネーム スコープが authorizationController に設定されていることがわかりました。

どちらの場合も、[Apple でサインイン] が表示され、フルネームについて尋ねられ、メールを非表示にするかどうかを尋ねられることを期待しています...

ただし、シミュレーターでのみ発生します。iPhone では、「続行」して、顔を認識させます。それだけです。

どちらの場合も、これは次の後に呼び出されます。

-(void)authorizationController:(ASAuthorizationController *)controller
  didCompleteWithAuthorization:(ASAuthorization *)authorization  API_AVAILABLE(ios(13.0)){

    ASAuthorizationAppleIDCredential *appleIDCredential = authorization.credential;
...

しかし、シミュレーターの場合、値を取得できます

"appleIDCredential.identityToken"
"appleIDCredential.email"
"appleIDCredential.fullName"

私のiPhoneでは、次の値しか取得できません

"appleIDCredential.identityToken"

ご協力ありがとうございました !:)

PS: どちらの場合も同じ Apple アカウントで接続しようとしたため、Apple の構成を調べてみましたが、それが問題なのかどうかはわかりません。

4

1 に答える 1