17

これまでのところ、サブスクリプションを機能させることができませんでした。(自分のデバイスでプッシュ通知を受け取ります。サブスクリプションは正常に作成されたようです)

[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 には、対応するプッシュ通知証明書も作成しましたが、これらのファイルとは関係がないため、ダウンロードしただけです。

  1. 私は何かをするのを忘れていますか?
  2. 私はそれを適切にテストしていませんか?
  3. サブスクリプションによってトリガーされたデバイスでリモート通知を受け取ることができた人はいますか?

更新 15 / 06 / 14 Apple 側のバグのようです。数週間待ちましょう。 https://developer.apple.com/library/content/samplecode/CloudAtlas/Introduction/Intro.html#//apple_ref/doc/uid/TP40014599


更新 18 / 05 / 15

このバグはずっと前に Apple によって解決され、今では魔法のように機能しますが、いくつかの考慮事項を考慮する必要があります。

  1. saveSubscription:completionHandler:メソッドがエラーなしで実行されることを確認します
  2. [application registerForRemoteNotifications]を使用する場合。フォアグラウンドのアプリでのみ通知を受け取ります。無意味に見えるかもしれませんが、この種のプッシュ通知は「サイレント」であり、それらを使用するためのユーザー許可を必要としないため、非常に便利です
  3. 許可を求めるポップアップ、アプリの外に表示されるアラート、および次のようなものを使用する必要があるすべてのもので、昔ながらのプッシュ通知を受け取りたい場合:
    UIUserNotificationSettings *settings = [UIUserNotificationSettings settingsForTypes:
                                        UIUserNotificationTypeBadge |
                                        UIUserNotificationTypeSound |
                                        UIUserNotificationTypeAlert
                                                                         categories:nil];
    

    [アプリケーション registerUserNotificationSettings:設定];

それで全部です

4

1 に答える 1

-1

registerForRemoteNotificationTypes:types NS_DEPRECATED_IOS(3_0, 8_0, "代わりに registerForRemoteNotifications と registerUserNotificationSettings: を使用してください");

// システム全体の設定も考慮して、有効なタイプを返します。接続性には関係ありません。

enabledRemoteNotificationTypes NS_DEPRECATED_IOS(3_0, 8_0, "-[UIApplication isRegisteredForRemoteNotifications] または -[UIApplication currentUserNotificationSettings] を使用して、ユーザー対応のリモート通知とユーザー通知設定を取得してください");

iOS8から非推奨になったのが原因ではないでしょうか?

于 2014-06-26T10:17:32.260 に答える