web-dev-qa-db-ja.com

ボタンが押された後、プッシュ通知の許可をユーザーに求めるにはどうすればよいですか?

iOSでプッシュ通知のアクセス許可をユーザーに求めるタイミングを制御する方法 および同様の質問を読みましたが、Swift 3)で書かれていませんでした。

Xcode 8/Swift 3.0でプッシュ通知を登録しますか? を5回読みました。

シミュレーターでアプリを何度も実行しましたが、初回以降、アプリはユーザーにプッシュ通知の許可を求めませんでした。

Xcode 8/Swift 3.0でプッシュ通知を登録しますか? のコードを使用し、ユーザーがを求められるように、さまざまな回答を試し、コードをさまざまな場所に移動し続けました特定のボタンを押した後でのみ許可され、アプリの起動直後では許可されません。

プッシュ通知コードを動作させるには、Apple IDなど)に登録する必要がありますかシミュレーターで?

6
jfjldsfjljfkls

まず、プッシュ通知を受け取るかどうかについて、ユーザーに1回だけプロンプトを表示する必要があります。したがって、それをボタンに結び付けて、毎回実行しようとすることは、UXの悪い決定です。ボタンが実際にプッシュ通知を有効にする必要があるより多くのことを行う場合にのみ、プッシュ通知プロンプトをボタンに関連付けます。

プッシュ通知にユーザーを登録するには、UIApplicationregisterForRemoteNotifications メソッドを使用する必要があります。このメソッドを実行すると、ユーザーはプッシュ通知を受信するかどうかを尋ねられますが、1回だけです。彼らが設定した設定は決定的なものと見なされ、ユーザーはnot再度プロンプトを表示されません。プッシュ通知の受信を開始する場合は、アプリの設定で変更する必要があります。これは予想される動作であり、その方法です。

ユーザーがボタンを押したときにのみプロンプトを表示する場合は、アプリのスタートアップコードからregisterForRemoteNotificationsへの呼び出しをすべて削除し、代わりにボタンに関連付けられたアクションからメソッドを呼び出します。

テスト目的でプッシュ通知のアクセス許可をリセットする場合これがApple可能:

IOSでのプッシュ通知権限アラートのリセット

プッシュ対応アプリがプッシュ通知に初めて登録するとき、iOSはユーザーにそのアプリの通知を受信するかどうかを尋ねます。ユーザーがこのアラートに応答すると、デバイスが復元されるか、アプリが少なくとも1日アンインストールされない限り、アラートは再度表示されません。

アプリの初回実行をシミュレートする場合は、アプリを1日アンインストールしたままにしておくことができます。次の手順に従うことで、実際に1日待つことなく後者を実現できます。

  1. デバイスからアプリを削除します。
  2. デバイスの電源を完全にオフにしてから、再びオンにします。
  3. [設定]> [一般]> [日付と時刻]に移動し、1日以上前の日付を設定します。
  4. デバイスの電源を完全にオフにしてから、再びオンにします。
2
Pedro Castilho