web-dev-qa-db-ja.com

iOS 7デバイストークンが同じデバイスで異なる

1つのデバイスに2つのアプリケーションがあります。 iOS 7の場合、両方のアプリケーションが異なるデバイストークンを送信しますが、iOS 6の場合、両方のアプリケーションが同じデバイストークンを送信します。

私の理解によると、デバイストークンは1つのデバイスのすべてのアプリケーションで同じである必要があります。 iOS7とiOS 6で何か違いがありますか?

16
Paragon

これも役に立ちました。この記事のポイント1を参照してください: https://support.urbanairship.com/customer/portal/articles/1321513-how-ios-7-handles-Push-differently

「iOS 7より前のデバイストークンは、特定のデバイスにインストールされたすべてのアプリで同じでした。タップタップリベンジでもUSA Todayでも、スマートフォンの異なるアプリは、同じアドレス、つまりデバイストークンを使用してプッシュをルーティングします。あなたに通知します。メッセージとペアリングするセキュリティ認証情報は、それが正しいアプリに到達したことを保証します。iOS 7では、Appleが一歩進んださらに、アプリのインストールごとにデバイストークンが異なることを確認しました。これにより、別の電話レベルの識別子を削除してユーザーのプライバシーをさらに保護できます。 "

15
Paragon

UPDATE:

私はこれを少し早く読んだと思います。私の改訂に注意してください。答えがあなたのユースケースを満たしている場合は、遠慮なく受け入れてください。

あなたの説明に基づいて、iOS6とiOS7の間のトークン生成に根本的な変更があることをお勧めします。この動作をより詳しく調べるには、 ローカルおよびプッシュ通知プログラミングガイド を参照することをお勧めします。このガイドの「通知のスケジュール、登録、処理」セクションには、Appleからのこの記述があります。

デバイストークンは変更できます。アプリは起動するたびに再登録する必要があります。iOSではUIApplicationのregisterForRemoteNotificationTypes:メソッドを呼び出し、OS XではNSApplicationのregisterForRemoteNotificationTypes:メソッドを呼び出します。このメソッドに渡されるパラメーターは、アプリケーションが受信する通知の初期タイプを指定します。ユーザーは、iOSの設定またはOS Xのシステム環境設定を使用して、いつでも有効な通知タイプを変更できます。UIApplicationのenabledRemoteNotificationTypesプロパティまたはNSApplicationのenabledRemoteNotificationTypesプロパティを使用して、現在有効な通知タイプをクエリできます。これらの通知タイプが通知ペイロードで指定されている場合でも、これらの通知タイプのいずれかがアプリで有効になっていない場合、システムはアイコンのバッジ付け、アラートメッセージの表示、アラートサウンドの再生を行いません。

参考:

Appleは、ユーザーがAppleプッシュサービスからのリモート通知を受信することに同意した場合、デバイストークンを使用します。

通常、デバイストークンには次の方法でアクセスします。

- (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken

deviceTokenAPSに対してデバイスを識別するトークン。トークンは不透明なデータタイプです。これは、プロバイダーがデバイスに通知を送信するときにAPSサーバーに送信する必要があるフォームだからです。 APSサーバーには、パフォーマンス上の理由からバイナリ形式が必要です。

デバイストークンは、UIDeviceのuniqueIdentifierプロパティとは異なります。これは、セキュリティとプライバシーの理由から、デバイスがワイプされるときに変更する必要があるためです。

Device Tokens Used in the Apple Push Notification Service

UIDevice Identifierにも大きな変更があります(Appleは使用を制限しています)。私は以下の読み物をお勧めします:

21
Tommie C.

これは非常に遅い回答ですが、i0S 9.2.1に対して行ったテストを共有したいと思います。デバイストークンは、デバイス内のアプリごとに一意です。アプリをインストールするたびに、新しいデバイストークンが生成されます。私が知る限り、AppleはiOS7のリリース後にデバイストークンのポリシーを変更しました。

2
Bipin Khanal