2016-12-19 9 views
1

サンプルウォッチキットアプリ(Apple Watch + iPhone)で作業しています。ここで私のアプリはうまく同期しています。また、私はWCSessionのデータ転送(iPhoneからApple Watchへ)を使って作業しました。両方がアクティブな状態になっていれば正常に動作しています。しかし、それが非アクティブ状態(バックグラウンド状態、スリープモードまたはフォアグラウンド状態)である場合、私はApplewatchにデータを転送できませんでした。デリゲートメソッドは呼び出さない。AppleWatchをバックグラウンドステートまたはスリープモードで使用しているときに、iPhoneからAppleWatchにメッセージを送信するにはどうすればよいですか?

- (void)applicationDidBecomeActive { 
// Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface. 
if ([WCSession isSupported]) { 
    WCSession *session = [WCSession defaultSession]; 
    session.delegate = self; 
    [session activateSession]; 
} 
} 

ここは私の委任方法です。

- (void)session:(nonnull WCSession *)session didReceiveMessage:(nonnull NSDictionary<NSString *,id> *)message replyHandler:(nonnull void (^)(NSDictionary<NSString *,id> * __nonnull))replyHandler {} 

私を助けてください。

+0

iWatchはそのように動作することとします。 iPhoneが直ちに開くことを期待してはいけませんが、ユーザーがインターフェースの1つと対話している間だけ実行されるため、逆になります。いくつかの例外がありますが、それらの例外はiPhoneから目を覚ますものではありません。 iWatchとやりとりしたり、アプリの機能を微調整したりするには、別の方法が必要です。 – Tushar

答えて

0

iOSデバイスとApple時計がペアになっている場合。その後、WCSessionを使用してメッセージを送信すると、自動的にアプリが復帰し​​ます。

0

次のコードを使用して私の問題を解決しました。 ViewControllerで

// Sending data to iphone to applewatch 
WCSession *session = [WCSession defaultSession]; 
    NSError *error; 
    [session updateApplicationContext:@{@"counterValue":@"counter", @"userId":@"id"} error:&error]; 

Applewatch:(Interfacecontroller)

//Receiving data in applewatch from iphone 
- (void) session:(nonnull WCSession*)session didReceiveApplicationContext:(nonnull NSDictionary<NSString * ,id> *)applicationContext { 
} 
関連する問題