私はAPNに大きく依存しているアプリを構築しています。アプリの最初の起動時に、iOSはこのアプリがAPNの使用を許可されているかどうかを確認します(registerForRemoteNotificationTypes:
呼び出しの結果)。ただし、いったん閉じると、このダイアログは表示されません。手動でSettings->Notifications->MyApp
にアクセスして、そこで有効化/無効化する必要があります。デバッグモードでアプリを起動するたびに最初の起動時にユーザーが経験することを実際に体験する方法はありますか?
Apple say の方法は次のとおりです。
IOSでのプッシュ通知許可アラートのリセット
プッシュ対応アプリがプッシュ通知に初めて登録するとき、iOSはユーザーにそのアプリの通知を受信するかどうかを尋ねます。ユーザーがこのアラートに応答すると、デバイスが復元されるか、アプリが少なくとも1日アンインストールされない限り、アラートは再度表示されません。
アプリの初回実行をシミュレートする場合は、アプリを1日アンインストールしたままにしておくことができます。次の手順に従うことで、実際に1日待つことなく後者を実現できます。
デバイスからアプリを削除します。
デバイスを完全にオフにして、再びオンにします。
[設定]> [全般]> [日付と時刻]に移動し、1日以上先の日付を設定します。
デバイスの電源を完全にオフにし、再びオンにします。
時は金なりであり、他の方法は永遠にかかります。デバッグ中にバンドルIDを何度も変更するだけで、通知が毎回新しくクエリされます。コードに満足したら、元のバンドルIDに戻ります。
以下のコメントからのキーノート:
IOS 9.xでは、アプリを削除して再インストールするたびにプロンプトを取得できます。これは、AppStore実稼働ダウンロードとアドホックモードの両方に当てはまります。デバイストークンは毎回一意になります。
@chengsamは、これがiOS 10でも同様であることを確認しました。 @WongWrayは、これがiOS 11でも同様であることを確認しました。
IOS10では、アプリを削除するだけでプロンプトを再度表示できるようになりました。
現在、彼らはprogrammaticがノーと言うことを決めた後にプッシュ通知を再度受け入れるようにユーザーに促す方法です。
アクセスが許可されているかどうかを確認し、表示されていない場合は、アプリケーションのプッシュ通知機能を有効にするために、プライバシー設定で手動で許可を与えることをユーザーに思い出させるビューを表示します。
私の問題はUserNotificationSettingsの登録ではありませんでした。これにより、APNは機能しましたが、背景音やバッジは機能しませんでした。
[[UIApplication sharedApplication] registerUserNotificationSettings:[UIUserNotificationSettings settingsForTypes:UIUserNotificationTypeAlert|UIUserNotificationTypeBadge|UIUserNotificationTypeSound categories:nil]];
プッシュ通知プロンプトが正しく表示されることをテストするだけの場合は、シミュレーターを使用します。必要なのは、アプリをアンインストールして再インストールするだけです。プッシュ通知に登録しようとすると、プロンプトが再び表示されます。