問題タブ [cksubscription]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
2557 参照

iphone - CloudKit サブスクリプションでリモート通知を機能させるにはどうすればよいですか?

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

[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] アイテムを購読

ダッシュボードに移動すると、いくつかのサブスクリプションが作成されていることがわかります。しかし、新しいレコードを作成しても何も起こらず、コールバック:

実行されることはありません(:シミュレーターではなく、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. 許可を求めるポップアップ、アプリの外に表示されるアラート、および次のようなものを使用する必要があるすべてのもので、昔ながらのプッシュ通知を受け取りたい場合:

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

それで全部です

0 投票する
1 に答える
4043 参照

ios - CloudKit プッシュ通知を受信しない

CloudKit を使用する小さなアプリを作成しています。何らかの理由で、クエリに一致する新しいレコードがある場合、アプリは通知を受け取りません。この機能を動作させることができた人はいますか?

アプリだけでなく、CloudKit ダッシュボードでも新しいレコードを作成します。レコードは非常に単純で、単一の整数フィールドがあります。

レコードを作成します。

通知登録:

サブスクリプションを作成します。

上記のコードを実行し、ダッシュボードで新しいレコードを作成した後、このアプリ デリゲート メソッドが呼び出されることを期待しています。

ただし、呼び出されることはありません。

0 投票する
1 に答える
288 参照

ios8 - サブスクリプションの作成時に「CKSubscriptionTypeRecordZone subscriptions are incompatible with subscription options 7」

次のコードを使用して CloudKit サブスクリプションを作成しようとしています。

そして、このエラーで失敗します:

*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'CKSubscriptionTypeRecordZone subscriptions are incompatible with subscription options 7'

これはどういう意味ですか?どうすれば修正できますか? レコードが作成、更新、または削除されたときに通知を受け取りたいです。

0 投票する
1 に答える
482 参照

cloudkit - 条件付き CKSubscription は通知をトリガーしません

OUPレコード タイプがあり、レコード タイプ.DeleteSelfへの参照がありOUます。

無条件のサブスクリプションを設定しただけの場合、それは機能します:

しかし、条件付きの方法ではありません:

端末コンテンツ:

述語またはサブスクリプション ID の問題は何ですか?

0 投票する
2 に答える
1704 参照

push-notification - CloudKit がバッジの数を 0 にリセットしない

いろいろ試してみましたが、cloudKit からの通知からバッジ カウントをリセットできないようです。他の誰かがこの問題に遭遇しましたか。これが私が試したことです:

1) バッジ カウントをローカルで 0 に設定します。

運が悪い...

2) サーバーを呼び出してバッジ カウントをクリアする

運が悪い...

3) すべての通知の変更を取り込み、すべて既読としてマークする

そしてまた運が悪い...

どんな提案でも大歓迎です!ありがとう、クリス

0 投票する
1 に答える
573 参照

ios - 複雑な述語を持つ CKSubscription

私はCKSubscriptionこのように使用しようとしています:

これでエラーが発生します:

これは、有効なオブジェクトNSPredicateの一部として CloudKit に適切に格納できないようですCKSubscription。それは本当のAppleのバグですか、それとも私のものですか?

PS述語条件のさまざまな部分を削除して、さまざまな組み合わせを試しました。正常に動作する唯一の条件のように見えevent_typeますが、3 つの条件を混在さANDせると、問題が発生します。

私がiPhone 5Sで使用Xcode 6 beta 6してOSX 10.10 DP6いるPPSiOS8 beta 5

アップデート:

次のいずれかの述語を含むサブスクリプションは正常に機能します。

ただし、共通の述語でサブスクリプションを保存すると失敗します。

実際の Apple CloudKit のバグのようです。bugreport.apple.com で問題をオープンしました #18105879

更新 2:

@purrrminator に感謝 - CloudKit プッシュ通知の受信に問題がある 2 つのレーダーを次に示します。

http://openradar.appspot.com/18807663

http://openradar.appspot.com/18798061

多くの等値比較子を使用して条件CKSubscriptionを提示することにより、適切に保存するための回避策を見つけました。INしかし、本当にCLoudKitからのプッシュ通知はありません...

0 投票する
1 に答える
996 参照

ios - CKSubscription による CKRecord の削除が機能しないことを確認する

CKSubscriptionドキュメントの説明:レコードの変更によってサブスクリプションが起動すると、サーバーは、レコードに元の変更を加えたデバイスを除く、そのサブスクリプションを持つすべてのデバイスにプッシュ通知を送信します。

2 つのデバイスがあり、異なる iCloud アカウントからログインしているとしますdevice 1device 2両方のデバイスが特定のレコード タイプのレコード削除をサブスクライブしているとします。

  1. device 1レコードを作成してからdevice 1削除すると、device 2通知を受け取ります-それはドキュメントによると、しかし..
  2. device 1レコードを作成してからdevice 2削除した場合、device 2通知を受け取ります - 私はそれがドキュメントに従っているとは思わず、それは何の意味もありません。device 2削除されたのでdevice 1通知する必要があります

デバイス 1 とデバイス 2 でサブスクリプションを設定する


デバイス 1 でレコードを作成


デバイス 2 のレコードを削除

0 投票する
3 に答える
2116 参照

ios - CloudKit サブスクリプションが機能しないことがある

このコードで CloudKit にサブスクライブしようとすると:

時々このエラーが発生します:

CKError 0x17558460: "サーバーは要求を拒否しました" (15/2000); server message = "内部サーバー エラー"; uuid = B89DE7A4-9D22-42BC-9CD4-4330F3FE04EF; コンテナー ID = "iCloud.com.app.testApp"

また

CKError 0x14fb3510: "サービスを利用できません" (2022 年 6 月); サーバー メッセージ = "スキーマのインストールに失敗しました。CAS に失敗しました"; uuid = F562D1AD-B40E-4842-A5EA-2A5F800C18F2; コンテナー ID = "iCloud.com.app.testApp"

誰もそれを修正する方法を知っていますか? 自分のコードで何かできますか? これは Apple の問題で、私にはどうすることもできませんか? ありがとう。

0 投票する
1 に答える
270 参照

ios - CKQueryNotification の理由が RecordUpdated であるのに、recordFields が nil である可能性はありますか?

println("queryNotification.recordFields.keys: \(queryNotification.recordFields?.keys)")

このログがどのように可能かわかりませんか? レコードが更新されたという通知を受け取った場合、変更されたフィールドが少なくとも 1 つ必要ですよね? ところで、他のデバイスの 1 つのフィールドを変更しているので、nil の理由recordFieldsがわかりません。少なくとも 1 つのキー値が必要です。

ここに画像の説明を入力