問題タブ [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.
ios - 同じ Mac で 2 つの iOS デバイスをデバッグする方法はありますか?
同じXcodeからは不可能だと思いますが、Xcodeを複数回開くことによってですか? それとも他のトリック?それらの間の CKSubscription と CloudKit 通信をテストしています。
ios - CloudKit レコードが更新されたことを別のデバイスに通知するにはどうすればよいですか?
CKSubscription のドキュメントには、次のように記載されています。レコードの変更によってサブスクリプションが起動すると、サーバーは、レコードに元の変更を加えたデバイスを除く、そのサブスクリプションを持つすべてのデバイスにプッシュ通知を送信します。
デバイス 1 が iPad で、デバイス 2 が iPhone で、どちらも同じiCloud アカウントでログインしているとします。両方のデバイスが特定のレコード タイプのレコード更新をサブスクライブしているとします。
私のコードは次のようになります(ハウスキーピングの一部を取り出しました)
あるデバイスがレコードを更新すると、他のデバイスに通知する必要があるように思えます。しかし、それは起こっていることではありません - 通知はありません。WWDC 2014 の Advanced iCloud ビデオでは、1 つのデバイスが通知を既読としてマークしたときに通知されることについて話していますが、私はそれについても成功していません。
同じアカウントにサインインしている別のデバイスがレコードを更新したときに、あるデバイスに通知することに成功した人はいますか?
notifications - CloudKit サブスクリプションは、ダッシュボード操作でのみ機能します
私のサブスクリプションは単純な述語に基づいています
特定のinviteCodeを含む1つのレコードを監視し、レコードが削除されたときに通知を送信するだけです(招待が他のユーザーによって受け入れられました)。ただし、他のデバイスからプログラムで招待を削除した場合、プッシュ通知は発生しません。ただし、ダッシュボードから招待を削除すると、通知が送信されます。誰かがこのバグで私を助けることができますか?
PS。サブスクリプションがサーバーに正常に保存されていることは確かです-ダッシュボードに表示されます。
更新しました:
答えはここにありました CKSubscription による CKRecord の削除を観察してください。
ios - CloudKit、リモート通知、aps-environment
CloudKit リモート通知を設定する際に、Info.plist にリモート通知フィールドを追加する「リモート通知」機能を有効にしました。しかし、コンソールに次のエラーが表示されます。
エラードメイン= NSCocoaErrorDomainコード= 3000「アプリケーションに有効な「aps-environment」資格文字列が見つかりません」UserInfo = 0x17db9850 {NSLocalizedDescription =アプリケーションに有効な「aps-environment」資格文字列が見つかりません}
iTunes Connect に送信すると、次のエラーがメールで送信されます。
プッシュ通知資格の欠落- アプリには、Apple プッシュ通知サービスへの登録に使用される API が含まれているように見えますが、アプリ署名の資格には「aps-environment」資格が含まれていません。アプリで Apple プッシュ通知サービスを使用している場合は、アプリ ID がプロビジョニング ポータルでプッシュ通知に対して有効になっていることを確認し、「aps-environment」資格を含むディストリビューション プロビジョニング プロファイルを使用してアプリに署名した後、再送信してください。
さて、プロビジョニング プロファイルを更新することになっていますが、それを実行してプッシュ通知を有効にしようとすると、サーバーで使用する SSL 証明書を作成する必要があります。私は CloudKit を使用していますが、サーバーはありません。プロビジョニング プロファイルを更新するにはどうすればよいですか?
cloudkit - ユーザーがアプリの使用を開始したことを CKSubscription で通知する方法はありますか?
ユーザーがアプリの使用を開始した時期を知る必要があります。CKSubscription
任意のレコード タイプを設定できることはわかっていますUsers
が、動作しないようです。
ios - CloudKit + 有効な aps-environment 資格エラーがありません
アプリでCloudKit
サブスクリプションを使用しようとしましたがdidReceiveRemoteNotification
、トリガーされません。
に保存CKSubscription
しましたCloudKit
。それらが存在することを確認するために、アプリの起動時に次のようにプロットします。
<CKSubscription: 0x15576310; ; Query Subscription: recordType=DailyVote, predicate=TRUEPREDICATE, subscriptionOptions=7, subscriptionID=1FA456A6-9BA5-411D-97B9-1EB57121A5D0, zoneID=(null)> predicate: TRUEPREDICATE subscriptionType: (Enum Value) subscriptionOptions: C.CKSubscriptionOptions
Apple docが推奨するように、デバイスをAPNサーバーに登録しようとしましたが、エラーデリゲートメソッドが呼び出され、メッセージが表示されました:
CloudKit
機能はオンです- 無効なプロビジョニング プロファイルはありません
- 私はトリックをしました:
Xcode
>Preferences
>Accounts
>pick your Account
>pick your Team
>View Details
>PRESS REFRESH BUTTON
- 新しいiCloudコンテナを使用して新しいアプリを作成し、すべてのロジックを移動しましたが、エラーは同じで、サブスクリプション通知は機能しません.
ios - CloudKit からすべてのクライアント レコードを更新する方法は?
私のアプリは、保存するすべてのレコードをローカルにCloudKit
保存します。したがって、これはビッグ データの小型電話の概念ではなく、すべてのデータ サーバーとすべてのデータ クライアントの概念です。アプリが再び起動したときに、すべての更新が時々必要です。
既存のすべてのレコード タイプを設定する必要がありCKSubscription
ますか?
- サーバーからの通知が多いかもしれませんが、「サイレントモード」もあると思いますが、iCloud通知収集のストレージ容量に制限があるはずです。
アプリの起動時にすべてのローカル レコードを削除しCloudKit
、更新プログラムを取得するために再度ダウンロードする必要がありますか?
- 毎回あまりにも多くのデータを更新する必要があります。
ios - ユーザーは設定から CKSubscriptions を削除できますか?
サブスクリプションが受け入れられた後、ユーザーがサブスクリプションを拒否できるかどうかに興味がありますか?
ios - CKSubscription で CKAsset の変更を確認する方法は?
CKAsset
で保存された画像が変更されたかどうかを確認するにはどうすればよいですかCloudKit
?
CKNotification doc は、desiredKeys について次のように述べています。
- 配列には最大 3 つのキーを含めることができます。
NSString
指定するキーの許容値はNSNumber
、、、、、およびCLLocation
です。値に他のデータ型が含まれるキーは指定できません。NSDate
CKReference
CKAsset
リストにない