class NSUbiquitousKeyValueStore
Overview 概要
This sample demonstrates how to store preference, configuration, and app-state data in the iCloud key-value store using the NSUbiquitous
class. You can then share this data with every instance of your app on every device connected to a userʼs iCloud account.
この見本コードは、どのように環境設定、構成設定、そしてアプリ状態データをiCloudキー値ストアの中にNSUbiquitous
クラスを使って格納するかを実演します。あなたはそれからこのデータを、あるユーザのもつiCloudアカウントに接続されたあらゆる機器上のあなたのアプリのあらゆるインスタンスで共有できます。
In this sample the user picks a background color. App instances running on other devices that are logged in with the same iCloud account are then notified of the color to match. この見本ではユーザは背景色を選びます。同じiCloudアカウントでログインされる他の機器上で動作しているアプリインスタンスは、そのとき色を合わせるよう通知されます。
Note 注意
With NSUbiquitous
you’re limited to 1 MB of total space. Don’t use it to store large amounts of data.
NSUbiquitous
であなたは全容量で1MBに制限されます。それを使って大きな量のデータを格納しないでください。
The key-value store is not a replacement for User
or other local techniques for saving the same data. The key-value store’s purpose is to synchronize key-value data between app instances running on different devices of the same user. If iCloud is not enabled or is not available on a given device, the app still keeps a local copy of the data in NSUser
.
キー値ストアは、User
のまたは同じデータを保存するその他の機械室の代わりではありません。キー値ストアの目的は、キー値データを同じユーザのいくつか異なった機器上で動作しているアプリインスタンスそれらの間で同期することです。iCloudがある与えられた機器上で作動されないまたは利用可能でないならば、アプリは依然としてデータのローカルコピーをNSUser
において保ちます。
Configure the Sample Code Project 見本のコードプロジェクトを構成設定する
To configure your Xcode project first you need change the Bundle Identifiers for both macOS and iOS targets to match your own. Next, to work with iCloud and NSUbiquitous
, you need set up an iCloud key-value store ID for both targets. This sample already has the both targets’ iCloud capabilities set up, with the Prefs
file already created. You need to fill in your own key-value store IDs in those entitlement files to complete the configurations.
あなたのXcodeプロジェクトを構成設定するには最初にあなたはBundle IdentifiersをmacOSとiOSターゲットの両方に対して変更してあなた自身に合ったものにする必要があります。次に、iCloudとNSUbiquitous
を扱うために、あなたはiCloudキー値ストアIDを両方のターゲットに対して準備する必要があります。この見本は、すでに両方のターゲットのもつiCloud適応性を準備済みです、すでに作成されたPrefs
ファイルで。あなたは、あなた自身のキー値ストアIDをそれら資格ファイルに記入して、構成設定を完了する必要があります。
For each target (iOS and macOS): 各ターゲット(iOSとmacOS)に対して:
In the Xcode project, open the target’s
Prefs
file. Xcodeプロジェクトにおいて、ターゲットのもつIn Cloud .entitlements Prefs
ファイルを開いてください。In Cloud .entitlements In that file, go to
com
entitlement and replace.apple .developer .ubiquity-kvstore-identifier $(CFBundle
with your key-value store ID (i.e.Idenfier) $(Team
). For example if your key-value store ID is “com.mycompany.myKeyValueStoreID” it would look like this:Identifier Prefix)<your key-value _store ID> $(Team
. It’s important that the key-value store ID portions are the same between both targets. そのファイルにおいて、Identifier Prefix)com .mycompany .my Key Value Store ID com
資格に行き、そして.apple .developer .ubiquity-kvstore-identifier $(CFBundle
をあなたのキー値ストアID(たとえば、Idenfier) $(Team
)と置き換えてください。例えばあなたのキー値ストアIDが “com.mycompany.myKeyValueStoreID” であるならば、それはこのように見えるでしょう:Identifier Prefix)<your key-value _store ID> $(Team
。重要なのは、キー値ストアIDの各部が両方のターゲットの間で同じであることです。Identifier Prefix)com .mycompany .my Key Value Store ID
In addition to configuring the project, you need to configure the devices in which the project runs. プロジェクトを構成設定することに加えて、あなたはプロジェクトが動作する機器を構成設定する必要があります。
To configure the iOS and macOS devices, verify that iCloud Drive is turned on. Then log into both devices with the same iCloud account. iOSとmacOS機器を構成設定するには、iCloud Driveが入りにされることを確かめてください。それから両方の機器に同じiCloudアカウントでログインしてください。
Build and run the app to install it on both devices, and then do the following: アプリをビルドおよび実行して、それを両方の機器にインストールしてください、それから以下を行ってください:
iOS: Tap the action button at the top right to pick the desired background color. iOS: アクションボタンを上右でタップして、望む背景色を選択してください。
macOS: Choose the desired background color from window’s popup menu. macOS: 望む背景色をウインドウのポップアップメニューから選んでください。
The desired color represents a value (numbered 0 to 3) which is uploaded to iCloud. App instances running on the other devices logged into the same iCloud account are notified to match that specific background color. 望んだ色は、ある値(番号0から3)を表します、それはiCloudにアップロードされます。同じiCloudアカウントにログインした他の機器上で動作しているアプリインスタンスは、その特定の背景色に合わせるよう通知されます。
Important 重要
The key-value store is intended for storing data that changes infrequently. As you test your devices, if the app on a device makes frequent changes to the key-value store, the system may defer the synchronization of some changes in order to minimize the number of round trips to the server. The more frequently the app make changes, the more likely the changes will be deferred and will not immediately show up on the other devices. キー値ストアは、まれに変化するデータの格納を意図されます。あなたがあなたの機器をテストするとき、ある機器上のアプリがキー値ストアに対してたびたび変更をするならば、システムはいくつかの変更の同期を延期してサーバーへの往復の回数を最小化するかもしれません。より頻繁にアプリがなす変更、もっとしそうな変更は、延期されるでしょう、そして直ぐには他の機器上で現れないでしょう。
Register to Respond to Key-Value Store Changes キー値ストア変更に応答するために登録する
The sample uses Notification
to register as an observer to the notification did
. The following example installs the app as the observer to respond to the key-value store changes:
この見本は、Notification
を使って、あるオブザーバとして通知did
に登録をします。以下の例は、アプリをオブザーバとしてインストールしてキー値ストア変更に応答します:
Immediately following the call to add
, obtain the key-value store changes since last launch by calling synchronize()
. The operating system controls when keys and values are uploaded to iCloud. Calling synchronize()
simply stores a local cache of them and notifies iCloud of new data waiting to be uploaded.
add
への呼び出しに続いて直ぐに、最後の起動から後のキー値ストア変化をsynchronize()
を呼び出すことによって入手してください。オペレーティングシステムは、いつキーと値がiCloudにアップロードされるかを制御します。synchronize()
を呼び出すことは、単にそれらのローカルキャッシュを格納します、そして新しいデータがアップロードされるのを待っていることをiCloudに通知します。
Respond to Key-Value Store Changes キー値ストア変化に応答する
The sample uses NSNotification
to register as an observer to the notification did
to detect for value changes in iCloud.
この見本は、NSNotification
を使って、あるオブザーバとして通知did
に登録して、値の変化をiCloudにおいて検知します。
The sample implements the function ubiquitous
for listening for key-value notification changes. This function is called when the key-value store in the cloud has changed externally. It replaces the old key-value color with the new one. Additionally, this function updates the NSUser
key-value.
見本は、関数ubiquitous
を、キー値通知変化に聞き耳をたてるために実装します。この関数は、キー値ストアがiCloudにおいて外部から変更された時に呼び出されます。それは古いキー値の色を新しいもので置き換えます。加えて、この関数はNSUser
キー値を更新します。
This sample examines the reason for the change through the use the NSUbiquitous
from the notification’s user
.
この見本は、変更の理由を、NSUbiquitous
を通知のもつuser
から使うことを通して調べます。
The reason for the key-value notification change is one of the following: キー値通知変化の理由は、以下のうちの1つです:
NSUbiquitous
: Value(s) were changed externally from other users/devices.Key Value Store Server Change NSUbiquitous
:値(複数)が他のユーザ/機器から外部的に変更された。Key Value Store Server Change NSUbiquitous
: Initial downloads happen the first time a device is connected to an iCloud account, and when a user switches their primary iCloud account.Key Value Store Initial Sync Change NSUbiquitous
:ある機器がiCloudアカウントに接続される第1回目に、そしてあるユーザが彼らの主要iCloudアカウントを切り替える時に初期ダウンロードが発生した。Key Value Store Initial Sync Change NSUbiquitous
: The app’s key-value store has exceeded its space quota on the iCloud server.Key Value Store Quota Violation Change NSUbiquitous
:アプリのもつキー値ストアが、iCloudサーバー上のそれの容量割当を超過した。Key Value Store Quota Violation Change NSUbiquitous
: The user has changed the primary iCloud account.Key Value Store Account Change NSUbiquitous
:ユーザが主要iCloudアカウントを変更した。Key Value Store Account Change
To obtain key-values that have changed, use the key NSUbiquitous
from the notification’s user
.
変更されたキー値を入手するには、キーNSUbiquitous
を通知のもつuser
から使ってください。