2

時計の接続について質問したいです。

1) iWatch アプリを開いたときに iPhone からデータを読み取ることはできますか? iWatch にデータを転送するために iPhone アプリを開くのを待ちたくありません。

2) iWatch でログイン画面 (テキスト フィールドからユーザー入力を取得するため) を作成することは可能ですか?

3) iWatch にはデバイス トークンとベンダー ID がありますか? これらの情報を iWatch から取得するにはどうすればよいですか?

4) iWatch アプリケーションから iPhone アプリのデータベース (iPhone アプリの sql lite db など) を読み取ることは可能ですか?

5) iPhone アプリから iWatch アプリに辞書を転送する方法。例を共有してください。

4

1 に答える 1

3

1) iWatch アプリを開いたときに iPhone からデータを読み取ることはできますか? iWatch にデータを転送するために iPhone アプリを開くのを待ちたくありません。

はい、バックグラウンド メソッド ( transferUserInfo:transferCurrentComplicationUserInfo:transferFile:updateApplicationContext:infoToSend) のいずれかを使用して、iPhone アプリを起動し、作業を完了できます。その逆は不可能です Watch アプリを開く必要があります。

2) iWatch でログイン画面 (テキスト フィールドからユーザー入力を取得するため) を作成することは可能ですか?

いいえ、テキスト フィールドは WatchOS2 では使用できません。

3) iWatch にはデバイス トークンとベンダー ID がありますか? これらの情報を iWatch から取得するにはどうすればよいですか?

watchOS 1 では、ベンダー ID と広告 ID は、WatchKit 拡張機能自体が iPhone で実行されていたため、実際には iPhone にありました。

watchOS 2 では、ベンダー ID と広告 ID を iPhone から Watch に同期し、そこで使用する必要があります。また、ベンダー ID と広告 ID を最新の状態に維持する必要があります。

4) iWatch アプリケーションから iPhone アプリのデータベース (iPhone アプリの sql lite db など) を読み取ることは可能ですか?

WatchKit では可能でしたが、WatchConnectivity Framework の導入により、アプリ グループ ベースの共通コンテナーが制限されました。UserDefualts については確かですが、ファイルについてはまだテストしていません。

5) iPhone アプリから iWatch アプリに辞書を転送する方法。例を共有してください。

これらを実行するには、次の 2 つの方法があります。

TransferUserInfo の使用

このメソッドを使用すると、Watch は毎回辞書を受け取ります。つまり、Watch が非アクティブで、iPhone がその期間中に 3 つの Dictionary を送信した場合、watch がアクティブになるたびに、デリゲート メソッドの複数の呼び出しによって 3 つの辞書すべてを受け取ります ( - (void)session:(WCSession *)session didReceiveUserInfo:(NSDictionary<NSString *, id> *)userInfowatch 側)。

-(void)sendDictionaryToWatch:(NSDictionary*)infoToSend{
        if([WCSession isSupported]){
            WCSession *aDefaultSession           = [WCSession defaultSession];
            aDefaultSession.delegate  = self;
            if([aDefaultSession isPaired] && [aDefaultSession isWatchAppInstalled]){
                [aDefaultSession activateSession];
                [aDefaultSession transferUserInfo:infoToSend];
            }
        }
    }

updateApplicationContext:エラーの使用:

この場合、デバイスはアクティベーション時に最新のコンテキストを Watch に送信します。つまり、3 つの Info を連続して送信した場合、Watch がアクティブ化されると、デリゲート メソッドの以前のものではなく、最新のもののみを受信するとします-(void)session:(WCSession *)session didReceiveApplicationContext:(nonnull NSDictionary<NSString *,id> *)applicationContext

-(void)sendDictionaryToWatch:(NSDictionary*)infoToSend{
    if([WCSession isSupported]){
        WCSession *aDefaultSession           = [WCSession defaultSession];
        aDefaultSession.delegate  = self;
        if([aDefaultSession isPaired] && [aDefaultSession isWatchAppInstalled]){
            [aDefaultSession activateSession];
            [aDefaultSession updateApplicationContext:infoToSend error:nil];
        }
    }
}
于 2016-04-15T11:44:27.287 に答える