2017-04-01 8 views
0

今日、ウォッチOSのフレームワークを使いこなし始めましたが、すばらしいアプリをまとめたいと思っていましたが、いくつか質問がありました。ウォッチアプリをリフレッシュする

バッテリーの状態だけでなく現在のバッテリーの%を表示するiOSアプリを作成しました。私はそれを時計の上に表示したかったのです。

  1. 時計アプリが更新されるのは、iOSアプリを完全に終了してから時計アプリがアクティブになっているときだけです。 iOSアプリを開いた後にウォッチアプリを開くと、ウォッチアプリの更新を許可するにはどうすればよいですか?

  2. この種の数字は2です。しかし、iOSアプリからバックグラウンドで情報を取得できるようにするにはどうすればよいですか?たとえば、iOSアプリがバックグラウンドにあり、iOSアプリをフォアグラウンドで開かずにバッテリーを取り出したいとします。私はこれを設定する方法について

いくつかのサイド・ノート -

をiOSアプリ内では、viewDidLoad方法では、私は私のセッションを開始します。

if ([WCSession isSupported]) { 
    wcSession = [WCSession defaultSession]; 
    wcSession.delegate = self; 
    [wcSession activateSession]; 
} 

実際のバッテリーの%と状態を更新するには、私のメソッドを呼び出します。私もviewDidAppearで、この同じメソッドを呼び出して、私はのリフレッシュを可能にするために、完全にアプリを再起動する必要はありません

NSDictionary *message = @{ 
          @"message" : [NSString stringWithFormat:@"%@", [numberFormatter stringFromNumber:levelObj]], 
          @"message_2" : [NSString stringWithFormat:@"%ld",(long)[UIDevice currentDevice].batteryState], 

          }; 


[wcSession sendMessage:message replyHandler:nil errorHandler:^(NSError * _Nonnull error) { 
    NSLog(@"%@", error.localizedDescription); 
}]; 

:その方法の中で、私は時計の上で情報を送信するこれを持っていますカウンターパートを見る。

私はメソッドをiOS側と同じアクティベーションと、時計アプリケーションがiOS側から受け取るものを処理する方法を持っています。しかし、iOSアプリを完全に再起動すると更新されます。

- (void)session:(WCSession *)session didReceiveMessage:(NSDictionary<NSString *,id> *)message { 

    NSLog(@"Message recieved!"); 
    [_batteryLevelLabelW setText:message[@"message"]]; 
} 

また、バッテリ状態メッセージを処理するためのコードがありますが、少し長いです。

私は助けてくれるほどの情報を提供したいと思います。 documentationによれば

答えて

0

が到達可能相手に 転送データにsend​Message(_:​reply​Handler:​error​Handler:​)又は send​Message​Data(_:​reply​Handler:​error​Handler:​)方法を使用します。これらの方法は、iOSアプリとウォッチキット の間の直接の通信には となっています。これらの メソッドが成功するには、現在is​Reachableプロパティがtrueでなければなりません。

watchappがフォアグラウンドでない場合、isReachableがfalseであるため、メッセージは配信されません。

使用する方法は、update​Application​Context(_:​)です。ウォッチアプリがフォアグラウンドで開かれてから配信されるまで待機します。

+0

ありがとうございます。 iOSアプリがまだ開かれていない場合はどうなりますか?どのようにそれがリフレッシュされ、 'isReachable'がtrueの時にwatch appに送られます。 – Michael

+0

@Michael iosアプリがまだ開かれていない場合、どうやってバッテリーレベルを取得しますか? – abjurato

+0

それは私の悪いです。異なった言い方をしているはずです。ウォッチアプリから情報を要求するメッセージが送信された場合、バッテリーレベルをリフレッシュする方法はありますか?それともiOSを最初に開かなければならないのですか? – Michael

関連する問題