2016-09-29 26 views
1

Appleは今夏にAppleがUserNotifications Frameworkを導入したことを知っています。 そして、このフレームワークに関するAppleのAPIリファレンスおよびWWDCのセッションによると、私たちは今、次のようにプッシュ通知を登録するための新しい方法を持っている:iOS 10のリモート通知

UNUserNotificationCenter.current().requestAuthorization(options: [options], completionHandler: {}) 

しかし、明確に、この方法は、APNをサーバーからdeviceTokenを得るつもりではありません登録とリモート通知のdeviceTokenを取得するための2つの方法だ

UIApplication.shared.registerForRemoteNotifications() 
func application(_ application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data){} 

を次のようにAppleはUIKitの中でAPIの一部を維持しています。

リモート通知に登録する場合は、まだrequestAuthorizationのことをする必要がありますか?またはローカル通知を登録するためだけのrequestAuthorizationですか?

さらに、リモート通知に登録したい場合でも両方を実装する必要がある場合は、registerForRemoteNotifications()をどこに書き込む必要がありますか? completionHandlerrequestAuthorizationと書かなければならないか、この2つのrequestregisterのものが並行して実行されているかのように書かなければなりませんか?

答えて

4

リモート通知の登録のみを行う場合は、requestAuthorizationが必要です。これは、ローカル通知とリモート通知の両方に適用されるアラートとサウンドを表示できるかどうかをユーザーに確認する方法です。

完了ハンドラのrequestAuthorizationの外部にあるregisterForRemoteNotificationsに電話をかけて、並行して実行することができます。

更新:

registerForRemoteNotificationsはあなたのユーザーのトークンかどうか、彼らが承認したプッシュ通知を取得します。

ユーザーが拒否した場合はどのように役立ちますか?

いつでも(アプリがrequestAuthorizationに通知を送信するよう指示した後)、設定アプリに入り、アプリをタップして通知を許可にすることができます。

ユーザーのトークンを使用して通知を送信している場合は、ユーザーが必要な操作を行わずにアクセス許可をオンにしたときに通知が開始されます。

+0

私は、これが論理的にはっきりしていないというだけで本当に混乱しています。つまり、コードを実装する方法です。同様に、内部補完ハンドラ内で、 'granted == false'ということは、ユーザがアプリの通知要求を拒否したことを意味しています。なぜなら、' registerForRemoteNotifications'を並行して実行する必要がありますか? – Allen

+0

ちょうど私の答えを更新することができますので、私のアプリでいくつかのテストを行った。私は文書化が非常に不明であることに同意します。 – charmingToad

+0

Appleはそれを改善する必要があると思う。 – Allen

関連する問題