問題タブ [cloudkit]

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 に答える
8048 参照

ios - NSOperationQueue の addOperation: 操作が終了し、キューに入れることができませんか?

注:
これは単なる概念実証です。
実際のバックグラウンド タスクは、生データの「HTTP Get」を継続的に要求し、メイン スレッドを介して表示することです。オンデマンド。

シナリオ:
1) オンデマンドでバックグラウンド タスク (ループ) を切り替えます。
2) バックグラウンド タスクは、反復ごとにメイン スレッド UI に通知します。
3) キューで実行されるブロック操作は 1 つだけです。

操作方法 1) NSBlockOperation
を使用して、バックグラウンド コードを含めます。
2) 地域の BOOL を使用してループを切り替えます。IBAction経由。

問題
1) コンパイラは BOOL 'isRunning' に強力なリンクとしてフラグを立てています。

このブロックで「自己」を強くキャプチャすると、保持サイクルが発生する可能性があります。


2) ブロック操作を追加する前に、キューに操作があるかどうかを確認しました。
しかし、私は常に次のエラーが発生します。

-[NSOperationQueue addOperation:]: 操作が終了し、キューに入れることができません

この概念実証は、記載されている問題に加えて、機能しているようです。

質問:
1) BOOL が単なるスケーラーであるのに、なぜコンパイルは BOOL 'running' を強い行としてフラグを立てているのですか?
2) キューに何も見つからない場合、別の NSBlockOperation を追加して NSOperationQueue を再利用できないのはなぜですか?

以下はコード全体です。

コンソール出力:

0 投票する
5 に答える
10316 参照

ios - CloudKit - サーバー側のロジックがない?

CloudKitを使用すると、クライアント側のアプリ開発に集中でき、iCloudによってサーバー側のアプリケーション ロジックを記述する必要がなくなります。CloudKit は、認証、プライベートおよびパブリック データベース、構造化およびアセット ストレージ サービスを提供します。これらはすべて無料で、非常に高い制限があります。

Apple のサーバーで実行するコードをアップロードできませんか?

Google App Engine や他のクラウド コンピューティング プラットフォームと比較されていると聞いたことがありますが、独自のコードを実行する機能がなければ、全体がかなり制限され、実際には比較できないのではないでしょうか?

たとえば、ユーザーが興味を持っているトピックに関する記事を定期的にプッシュするニュース アプリを構築したい場合、CloudKit だけを使用してこれを行うことはできません。サーバー上でスケジュールされたジョブとデータ処理が必要になるからです。

何かご意見は?

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

ios - cron ジョブを介してプッシュ通知を送信するための CloudKit?

毎日のメニューに基づいてプッシュ通知を送信する必要がある大学のダイニング メニュー アプリを作成しています。当初は、Heroku を介してユーザー データをデータベースに保存し、cron ジョブを使用してデータベース内のデータを日替わりメニューと比較し、適切な通知をユーザーに送信することを計画していました。

しかし、Cloudkit に関するニュースの後、代わりに Cloudkit を使用して、コードのサーバー関連部分を管理できると考えました。しかし、詳しく調べてみると、Cloudkit は現在データを保存することはできるようですが、サーバー側のコードを書くことはできません。

この制限を正しく解釈したかどうか、または実際に CloudKit でデータベースをスケジュールして、そのデータをオンライン メニューと比較し、適切なプッシュ通知を送信できるかどうか疑問に思っています。

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

ios - テストで CloudKit コードを実行していますか?

XCTest フレームワークを使用して CloudKit コードの自動テストを作成したいと考えています。テスト ケースが実行され、有効なコンテナー オブジェクトが取得され、有効なパブリック データベース オブジェクトが取得されますが、実際に何かを実行しようとすると例外が発生して終了します。

私がこれまでに試したこと:

  • テスト ターゲットの を確認しましたがInfo.plist、そこにあるバンドル ID はコンテナー ID に対応しています。
  • [[NSBundle mainBundle] bundleIdentifier]正しいバンドル ID が返されるようにスウィズルしました。
  • メインアプリのターゲットから iCloud 資格をコピーしました。

しかし、私はまだ例外を受け取ります。CloudKit コードをテストで実行する方法はありますか?

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

ios - CloudKit カウント レコード

多くのレコードを持つ可能性のある「テーブル」があります。新しいレコードを追加するとき、いくつかの値の計算に使用するため、現在のテーブルに既にいくつのレコードがあるかを知る必要があります。私が見つけることができる最も近いものは、次のようなすべてのエントリを要求することです:

queryCompletionBlock が CKQueryCursor と共にカウントまたは結果の配列を提供することを望みますが、残念ながらそうではありません。

テーブル内の行数を計算する他の方法はありますか?

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:設定];

それで全部です