2012-02-08 11 views
11

ユーザがプッシュ通知を拒否すると、didFailToRegisterForRemoteNotificationsWithErrorによってエラーが発生します。この場合、NSErrorオブジェクトのコードが何であるかを知っている人はいませんか?didFailToRegisterForRemoteNotificationsWithError:ユーザーがエラーを拒否しましたか?

+0

あなたは実際にJerredに答えを与えるべきです - 彼は正しい答えです。私はちょうど私の会社の顧客のためにこれを再確認しなければなりませんでした。エンタープライズアプリ(プロダクションプッシュサービスを使用)をダウンロードし、尋ねられたときにすべての通知を許可せず、アプリにトークンがまだ残っています。 [設定]で有効にし、アプリを再起動して[設定]で無効にして、アプリを再起動します。トークンはすべて返されます。 –

答えて

19

あなたの最初の声明(常に)は当てはまるとは思わない。アプリが有効なプロビジョニングプロファイルで正しく署名されている場合、registerForRemoteNotificationTypes:を呼び出すと、設定アプリのユーザーの通知の選択に関係なくapplication:didRegisterForRemoteNotificationsWithDeviceToken:になります。私の経験から、application:didFailToRegisterForRemoteNotificationsWithError:が呼び出される唯一の時間は、不適切に署名されたアプリケーションのためだった。問題のエラーは、 "アプリケーションの有効なAP環境授権が見つかりませんでした"と述べました。

18

この質問は古いですが、@ Jerredの回答のほとんどに同意しますが、私はとにかく更新された回答を投稿すると考えました。

スレッドの主な質問に対する回答はです。です。

アプリケーション:didFailToRegisterForRemoteNotificationsWithError:が不正なプロビジョニングプロファイルで署名されたときに呼び出されます。また

アプリケーション:didRegisterForRemoteNotificationsWithDeviceToken:ユーザーがアプリの(設定アプリで)通知センターでバッジ、バナー/アラートまたはサウンド設定のAT-少なくとも一方を有効にする場合にのみが呼び出されます。

ユーザーがプッシュを送信する権限を付与されたいかなるネットワーク接続とユーザーが存在しない場合にはプッシュ通知

  • を送信するアプリの権限を付与することを拒否した場合のiOSは、これらのメソッド

    • のいずれかを呼び出すことはありませんシナリオがあります。通知。
    • ユーザーが設定アプリで通知センターからアプリのプッシュ通知を無効にしたとき。
  • +1

    これは、1つの部分を除いて良い記事です:「APNSのための環境は別々です:**サンドボックス(開発とアドホックビルド用)**とプロダクション。それぞれに独自の証明書があり、プロビジョニング手順を二つ。"。 Ad-hocビルドは、実際にはAPNSのAPNSに当てはまりました。「オペレーティングシステムは、開発ビルドのためのサンドボックス環境への永続的な接続を確立し、アドホックおよびディストリビューションビルドは本番環境に接続します。 https://developer.apple.com/library/ios/technotes/tn2265/_indexhtml#// apple_ref/doc/uid/DTS40010376-CH1-TNTAG42 –

    +0

    この記事ではベストプラクティスとして説明した内容を、現在は利用できなくなっているため、更新することは素晴らしいことです。 – leolobato

    +0

    @leolobatoと合意すると、記事へのリンクはもう有効ではありません。 – Zorayr

    1

    私の経験上、didFailToRegisterForRemoteNotificationsWithError:メソッドは、より重大なケースのために予約されているため、通知の許可要求ダイアログが表示されないことがあります。私が知っているケースでは、プッシュ通知(例えば、シミュレータ)をサポートしていないデバイス上で実行されているアプリケーションや、アプリケーションバイナリでのaps-environmentエンタイトルメントの誤った設定が含まれます。

    関連する問題