iOS 13でAPNSデバイストークンを取得できない


14

APNSデバイストークンに関連する問題があります。Xcode 10.2とiOS 12.1を使用する前。現時点では、デリゲートメソッドでデバイストークンを取得するために使用していました

-(void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken

私はこのようなAPNSに登録していますが、問題なく動作していました。

UNUserNotificationCenter *center = [UNUserNotificationCenter currentNotificationCenter];
    center.delegate = self;
    [center requestAuthorizationWithOptions:(UNAuthorizationOptionSound | UNAuthorizationOptionAlert | UNAuthorizationOptionBadge) completionHandler:^(BOOL granted, NSError * _Nullable error){
                if(!error){
                    [[UIApplication sharedApplication] registerForRemoteNotifications];
                }
    }];

iPhone 13にiOS 13をインストールし、Xcode 11を使用すると、デリゲートメソッドdidRegisterForRemoteNotificationsWithDeviceTokenが呼び出されなくなります。この問題を理解できません。私はすでにこれについて調査しましたが、デリゲートメソッドからトークンを取得する際にいくつかの変更点があることを知っていますが、私の場合、デリゲートメソッドは呼び出されていません。繰り返しになりますが、iOS 12では問題なく動作しています。


それは今解決されました。開発者ポータルからXcode 11のすべての証明書を作成する必要があり、機能しました。
IOS Dev

@IOSDev何をしたかを文書化してください。私は今、同じことに遭遇しています。ここには良いカルマがあると思います。
ダレンブラック

1
これに対する解決策を見つけましたか?私は同じ問題で実行しています。
Aman.Samghani

1
@ Aman.Samghani:はい、プッシュ通知のアラートが生成されるのは初めてではありません。プッシュ通知レジスターの同じコードを再度呼び出す必要があり、その後デバイストークンを取得しました。だから二回か三回で私はトークンを得ました。
IOS Dev

回答:


15

iPhoneを再起動するだけです。それはそれと同じくらい簡単で、90%のケースで問題を解決します。


1
早くこのコメントを読んで欲しい。5時間++を無駄にしてデバッグし、プロファイルなどに熱狂的に凝視しました
zuyao88

1
私のために働く、iOS 13.3.1
Jhonattan

それは奇妙なことです。何が問題かを理解するのに3時間費やしました
fakiho

2

https://appleid.apple.com/にログオンし、「https://developer.apple.com/account/ios/identifier/bundle」または「https://developer.apple.com/account/resources」のURLを開きます。 / certificates / list "。

まず、2つの新しい証明書を作成します。(1)iOS、macOS、tvOS、watchOSアプリのApple Development Sign開発バージョン。Xcode 11以降で使用します。(2)Apple配布App Storeへの提出またはアドホック配布用にアプリに署名します。Xcode 11以降で使用します。

次に、URL「https://developer.apple.com/account/resources/identifiers/list」からメニュー「識別子」を見つけます。アプリの識別子を編集し、開発SSL証明書とプロダクションSSL証明書がプッシュ通知に追加されていることを確認します。

次に、URL「https://developer.apple.com/account/resources/profiles/list」からメニュー「プロファイル」を開きます。Xcode 11以降で使用されるDistributionForのタイプとしての証明書を確認し、保存します

最後に、プロビジョニングプロファイルファイルと作成されたCA証明書ファイルをMACにダウンロードします。これらは、ファイルを個別にダブルクリックして、XCodeおよびキーチェーンアプリケーションに追加されます。

さらに、携帯電話を再起動し、リモート通知が正しく設定されていることを確認してください。


1

私も同じ問題に直面しました。多くのシナリオを試しました。私は以下の手順を実行した後に成功しました:

  1. 再起動されたデバイス
  2. registerForRemoteNotifications メインスレッドでメソッドを呼び出しました。

私の場合、デバイストークンを取得していましたが、応答に遅延があります(リモート通知をバックグラウンドスレッドに登録したためだと思います)。しかし[[UIApplication sharedApplication] registerForRemoteNotifications]、メインスレッドに移動した後は、すべて正常に動作します。

これが私のコードです:

    [UIApplication sharedApplication].applicationIconBadgeNumber = 0;
    UNUserNotificationCenter *center = [UNUserNotificationCenter currentNotificationCenter];
    center.delegate = delegate;
    [center requestAuthorizationWithOptions:(UNAuthorizationOptionSound | UNAuthorizationOptionAlert | UNAuthorizationOptionBadge) completionHandler:^(BOOL granted, NSError * _Nullable error){
        if(!error){
            dispatch_async(dispatch_get_main_queue(), ^{
                [[UIApplication sharedApplication] registerForRemoteNotifications];
                [self callCompletion:TRUE completion:completion];
            });
        }
    }];

これがお役に立てば幸いです。


まったく機能しない
Vyachaslav Gerchicov

0

以下の手順に従って、この方法でこの問題を解決しました。

didRegisterForRemoteNotificationsWithDeviceTokenメソッドに印刷を追加し、デバイスの接続を維持します。

  1. ターゲット機能に行きました。
  2. プッシュ通知をオフにする
  3. デバイスでアプリをビルドして実行し、待ちます。
  4. 次に、失敗したプッシュ通知のエラーメッセージが表示されたコンソールを確認します。
  5. アプリの実行を停止します。
  6. プッシュ通知を再度オンにします。
  7. 後藤https://developer.apple.com/アカウントを選択してください- >証明書、識別子&プロジェクトProvisionalProfilesを選択- >キー- >編集をクリックして、その上にそのダウンロードprovisonalプロファイルをダブルクリックした後、保存してください。
  8. デバイスでアプリをビルドして実行します。
  9. その後、正常に動作します。

    これが誰かのお役に立てば幸いです。


-2

これは、デプロイデバイスで使用されるプラットフォームバージョンのXCodeインストールに欠落しているDeviceSupportに関連しています。

私の場合、13.1プラットフォームがありませんでした。解決するには、DeviceSupportsをフォルダーに追加するだけです

Xcode.app/Contents/Develper/Platforms/iPhoneOS.platform/DeviceSupport

不足しているDeviceSupportは、https://github.com/iGhibli/iOS-DeviceSupport/tree/master/DeviceSupportからダウンロードできます


運が悪い@ Giuseppe、12.4.2でも機能しない
IOS Dev

それは今解決されました。Xcode 11のすべての証明書を作成する必要があり、機能しました。
IOS Dev

両方の証明書を作成しましたが、まだ機能しません。DeviceSupportsもチェックしましたが、13.1がそこにあります。私はxcode 11.1を使用しており、iOS 13.1を搭載したiphone 7でテストしています。助言がありますか?
Ugo Chirico

1
バックグラウンドモードを追加しました:フェッチ、処理、リモート通知、iphoneを再起動して動作しました。本当に理由はわかりませんが、うまくいきました
Ugo Chirico '26

シミュレータのデバイスサポートは、実際のデバイスに関連する問題にどのように属しますか?
Vyachaslav Gerchicov

-2

これを試して。

  1. アプリケーションを削除します。
  2. スマートフォンを再起動します。
  3. デバイスでビルドして実行(アプリケーションを再インストール)します。

それは私のために働いた。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.