問題タブ [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.
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 には、対応するプッシュ通知証明書も作成しましたが、これらのファイルとは関係がないため、ダウンロードしただけです。
- 私は何かをするのを忘れていますか?
- 私はそれを適切にテストしていませんか?
- サブスクリプションによってトリガーされたデバイスでリモート通知を受け取ることができた人はいますか?
更新 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]を使用する場合。フォアグラウンドのアプリでのみ通知を受け取ります。無意味に見えるかもしれませんが、この種のプッシュ通知は「サイレント」であり、それらを使用するためのユーザー許可を必要としないため、非常に便利です
- 許可を求めるポップアップ、アプリの外に表示されるアラート、および次のようなものを使用する必要があるすべてのもので、昔ながらのプッシュ通知を受け取りたい場合:
[アプリケーション registerUserNotificationSettings:設定];
それで全部です
ios - CloudKit プッシュ通知を受信しない
CloudKit を使用する小さなアプリを作成しています。何らかの理由で、クエリに一致する新しいレコードがある場合、アプリは通知を受け取りません。この機能を動作させることができた人はいますか?
アプリだけでなく、CloudKit ダッシュボードでも新しいレコードを作成します。レコードは非常に単純で、単一の整数フィールドがあります。
レコードを作成します。
通知登録:
サブスクリプションを作成します。
上記のコードを実行し、ダッシュボードで新しいレコードを作成した後、このアプリ デリゲート メソッドが呼び出されることを期待しています。
ただし、呼び出されることはありません。
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'
これはどういう意味ですか?どうすれば修正できますか? レコードが作成、更新、または削除されたときに通知を受け取りたいです。
cloudkit - 条件付き CKSubscription は通知をトリガーしません
OUP
レコード タイプがあり、レコード タイプ.DeleteSelf
への参照がありOU
ます。
無条件のサブスクリプションを設定しただけの場合、それは機能します:
しかし、条件付きの方法ではありません:
端末コンテンツ:
述語またはサブスクリプション ID の問題は何ですか?
push-notification - CloudKit がバッジの数を 0 にリセットしない
いろいろ試してみましたが、cloudKit からの通知からバッジ カウントをリセットできないようです。他の誰かがこの問題に遭遇しましたか。これが私が試したことです:
1) バッジ カウントをローカルで 0 に設定します。
運が悪い...
2) サーバーを呼び出してバッジ カウントをクリアする
運が悪い...
3) すべての通知の変更を取り込み、すべて既読としてマークする
そしてまた運が悪い...
どんな提案でも大歓迎です!ありがとう、クリス
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からのプッシュ通知はありません...
ios - CKSubscription による CKRecord の削除が機能しないことを確認する
CKSubscription
ドキュメントの説明:レコードの変更によってサブスクリプションが起動すると、サーバーは、レコードに元の変更を加えたデバイスを除く、そのサブスクリプションを持つすべてのデバイスにプッシュ通知を送信します。
2 つのデバイスがあり、異なる iCloud アカウントからログインしているとしますdevice 1
。device 2
両方のデバイスが特定のレコード タイプのレコード削除をサブスクライブしているとします。
device 1
レコードを作成してからdevice 1
削除すると、device 2
通知を受け取ります-それはドキュメントによると、しかし..device 1
レコードを作成してからdevice 2
削除した場合、device 2
通知を受け取ります - 私はそれがドキュメントに従っているとは思わず、それは何の意味もありません。device 2
削除されたのでdevice 1
通知する必要があります
デバイス 1 とデバイス 2 でサブスクリプションを設定する
デバイス 1 でレコードを作成
デバイス 2 のレコードを削除
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 の問題で、私にはどうすることもできませんか? ありがとう。
ios - CKQueryNotification の理由が RecordUpdated であるのに、recordFields が nil である可能性はありますか?
println("queryNotification.recordFields.keys: \(queryNotification.recordFields?.keys)")
このログがどのように可能かわかりませんか? レコードが更新されたという通知を受け取った場合、変更されたフィールドが少なくとも 1 つ必要ですよね? ところで、他のデバイスの 1 つのフィールドを変更しているので、nil の理由recordFields
がわかりません。少なくとも 1 つのキー値が必要です。