これまでのところ、サブスクリプションを機能させることができませんでした。(自分のデバイスでプッシュ通知を受け取ります。サブスクリプションは正常に作成されたようです)
[CloudKitAtlas][1] で遊んでいます。そのプロジェクトの readme に書かれていることを実行しました。
要件
建てる
- iOS 8.0 SDK および Xcode 6
- iCloud で CloudKit の資格を有効にする (機能から)
- コンテナー名を変更して、開発者アカウントでコンテナーをプロビジョニングします
アプリを起動でき、リモート通知に正常に登録されます。
2014-06-09 11:15:17.712 CloudKitAtlas[841:220562] トークンを使用したプッシュ通知に登録:
また、レコードを作成し、クエリを実行し、サブスクライブすることもできます。
2014-06-09 11:15:21.966 CloudKitAtlas[841:220934] アイテムを購読
ダッシュボードに移動すると、いくつかのサブスクリプションが作成されていることがわかります。しかし、新しいレコードを作成しても何も起こらず、コールバック:
- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)info
実行されることはありません(注:シミュレーターではなく、iPhone 5Sでアプリを実行しています)
明示的なバンドル ID (ワイルドカードなし) でデバッグ署名を使用しています。このアプリ ID には、対応するプッシュ通知証明書も作成しましたが、これらのファイルとは関係がないため、ダウンロードしただけです。
- 私は何かをするのを忘れていますか?
- 私はそれを適切にテストしていませんか?
- サブスクリプションによってトリガーされたデバイスでリモート通知を受け取ることができた人はいますか?
更新 15 / 06 / 14 Apple 側のバグのようです。数週間待ちましょう。 https://developer.apple.com/library/content/samplecode/CloudAtlas/Introduction/Intro.html#//apple_ref/doc/uid/TP40014599
更新 18 / 05 / 15
このバグはずっと前に Apple によって解決され、今では魔法のように機能しますが、いくつかの考慮事項を考慮する必要があります。
- saveSubscription:completionHandler:メソッドがエラーなしで実行されることを確認します
- [application registerForRemoteNotifications]を使用する場合。フォアグラウンドのアプリでのみ通知を受け取ります。無意味に見えるかもしれませんが、この種のプッシュ通知は「サイレント」であり、それらを使用するためのユーザー許可を必要としないため、非常に便利です
- 許可を求めるポップアップ、アプリの外に表示されるアラート、および次のようなものを使用する必要があるすべてのもので、昔ながらのプッシュ通知を受け取りたい場合:
UIUserNotificationSettings *settings = [UIUserNotificationSettings settingsForTypes: UIUserNotificationTypeBadge | UIUserNotificationTypeSound | UIUserNotificationTypeAlert categories:nil];
[アプリケーション registerUserNotificationSettings:設定];
それで全部です