ユーザがプッシュ通知を拒否すると、didFailToRegisterForRemoteNotificationsWithErrorによってエラーが発生します。この場合、NSErrorオブジェクトのコードが何であるかを知っている人はいませんか?didFailToRegisterForRemoteNotificationsWithError:ユーザーがエラーを拒否しましたか?
答えて
あなたの最初の声明(常に)は当てはまるとは思わない。アプリが有効なプロビジョニングプロファイルで正しく署名されている場合、registerForRemoteNotificationTypes:
を呼び出すと、設定アプリのユーザーの通知の選択に関係なくapplication:didRegisterForRemoteNotificationsWithDeviceToken:
になります。私の経験から、application:didFailToRegisterForRemoteNotificationsWithError:
が呼び出される唯一の時間は、不適切に署名されたアプリケーションのためだった。問題のエラーは、 "アプリケーションの有効なAP環境授権が見つかりませんでした"と述べました。
この質問は古いですが、@ Jerredの回答のほとんどに同意しますが、私はとにかく更新された回答を投稿すると考えました。
スレッドの主な質問に対する回答はです。です。
アプリケーション:didFailToRegisterForRemoteNotificationsWithError:が不正なプロビジョニングプロファイルで署名されたときに呼び出されます。また
、
アプリケーション:didRegisterForRemoteNotificationsWithDeviceToken:ユーザーがアプリの(設定アプリで)通知センターでバッジ、バナー/アラートまたはサウンド設定のAT-少なくとも一方を有効にする場合にのみが呼び出されます。
ユーザーがプッシュを送信する権限を付与されたいかなるネットワーク接続とユーザーが存在しない場合にはプッシュ通知
- のいずれかを呼び出すことはありませんシナリオがあります。通知。
- ユーザーが設定アプリで通知センターからアプリのプッシュ通知を無効にしたとき。
これは、1つの部分を除いて良い記事です:「APNSのための環境は別々です:**サンドボックス(開発とアドホックビルド用)**とプロダクション。それぞれに独自の証明書があり、プロビジョニング手順を二つ。"。 Ad-hocビルドは、実際にはAPNSのAPNSに当てはまりました。「オペレーティングシステムは、開発ビルドのためのサンドボックス環境への永続的な接続を確立し、アドホックおよびディストリビューションビルドは本番環境に接続します。 https://developer.apple.com/library/ios/technotes/tn2265/_indexhtml#// apple_ref/doc/uid/DTS40010376-CH1-TNTAG42 –
この記事ではベストプラクティスとして説明した内容を、現在は利用できなくなっているため、更新することは素晴らしいことです。 – leolobato
@leolobatoと合意すると、記事へのリンクはもう有効ではありません。 – Zorayr
私の経験上、didFailToRegisterForRemoteNotificationsWithError:
メソッドは、より重大なケースのために予約されているため、通知の許可要求ダイアログが表示されないことがあります。私が知っているケースでは、プッシュ通知(例えば、シミュレータ)をサポートしていないデバイス上で実行されているアプリケーションや、アプリケーションバイナリでのaps-environmentエンタイトルメントの誤った設定が含まれます。
- 1. エラー:ユーザー 'www-data' @ 'localhost'のアクセスが拒否されました
- 2. CreateProcessエラー= 5、アクセスが拒否されました:CreateProcessエラー= 5、アクセスが拒否されました
- 3. エラー102(net :: ERR_CONNECTION_REFUSED):サーバーが接続を拒否しました。
- 4. ActiveXObject.Save()メソッドが許可を拒否しました。エラー
- 5. Hadoop Connectionがエラーを拒否しました
- 6. RailsプロジェクトMySQL DB接続エラー - rootユーザーのアクセスが拒否されました
- 7. MySQLエラー1045「ユーザー 'user' @ 'localhost'(パスワードは:YES)のアクセスが拒否されました」
- 8. Webサービスのメソッドでアクセス拒否エラーが発生しました
- 9. window.moveTo()でアクセス拒否エラーが発生しました
- 10. SELECTコマンドがユーザーに拒否されました
- 11. データベース 'dbname'へのユーザー 'username'のアクセスが拒否されました
- 12. Mysql:ユーザー 'root' @ 'localhost'のアクセスが拒否されました
- 13. アクセスデータベースでエラーが発生しました:アクセスが拒否されました: 'CreateObject'
- 14. "java.security.AccessControlExceptionアクセスが拒否されました:"エラーが発生する
- 15. ノードアプリケーションが「エラー:EACCES:権限が拒否されました。mkdir」.tmp '
- 16. python RegDeleteKeyエラー5アクセスが拒否されました
- 17. エラー:プロパティ '文書'へのアクセスが拒否されました
- 18. Djangoエラー(13、 '許可が拒否されました')
- 19. System.ComponentModel.Win32Exception:アクセスが拒否されましたエラー
- 20. エラー:mysqlでNode.jsのアクセスが拒否されました
- 21. Ajaxエラー - "許可が拒否されました"
- 22. Python CouchDB/httplib - エラー:[Errno 61]接続が拒否されました
- 23. Ruby/Juggernautエラー - Errno :: ECONNREFUSED(接続が拒否されました...)
- 24. Visual Studioカスタムコントロールのdllアクセスでエラーが拒否されました
- 25. xsdエラー:パスへのアクセスが拒否されました
- 26. FTP「550アクセスが拒否されました」エラー
- 27. mysqlimport:エラー:1045、アクセスが拒否されました
- 28. ASP.NET [Win32Exception(0x80004005):アクセスが拒否されました]エラー
- 29. java.io.FileNotFoundException:(アクセスが拒否されました)
- 30. MSMQアクセスが拒否されました
あなたは実際にJerredに答えを与えるべきです - 彼は正しい答えです。私はちょうど私の会社の顧客のためにこれを再確認しなければなりませんでした。エンタープライズアプリ(プロダクションプッシュサービスを使用)をダウンロードし、尋ねられたときにすべての通知を許可せず、アプリにトークンがまだ残っています。 [設定]で有効にし、アプリを再起動して[設定]で無効にして、アプリを再起動します。トークンはすべて返されます。 –