Appleでユーザーに通知する方法はありますか?iPhoneが範囲外になり、範囲内に戻ったときにウォッチします。ウォッチ拡張機能でそれを行うにはどうすればよいですか?.
前もって感謝します。
だからWatchOS 2ではそれが可能です!
IPhone側で行う必要があります。
最初 :
import WatchConnectivity
次に:
if WCSession.isSupported() { // check if the device support to handle an Apple Watch
let session = WCSession.defaultSession()
session.delegate = self
session.activateSession() // activate the session
if session.paired { // Check if the iPhone is paired with the Apple Watch
// Do stuff
}
}
私はそれがあなたを助けることを願っています:)
WatchOS 2.0を使用すると、これが可能です。これを行うには、Appleウォッチで通知を受け取りたい場合は、これらをExtensionDelegateに追加します。
func watchKitSetup() {
if (WCSession.isSupported()) {
let session = WCSession.defaultSession()
session.delegate = self
session.activateSession()
// In your WatchKit extension, the value of this property is true when the paired iPhone is reachable via Bluetooth.
// On iOS, the value is true when the paired Apple Watch is reachable via Bluetooth and the associated Watch app is running in the foreground.
// In all other cases, the value is false.
if session.reachable {
}
}
}
func applicationDidFinishLaunching () {
self.watchKitSetup()
}
// Called when session.reachable value changes, such as when a user wearing an Apple Watch gets out of range of their iPhone.
func sessionReachabilityDidChange(session: WCSession) {
if session.reachable {
}
}
WCSessionDelegateをExtensionDelegateに追加する必要もあります。
正式な観点から、Appleは、これがどのように処理されるかについては何も示していません。
ただし、アプリの関与なしにOSによってペアリングおよび通信エリアが処理されることを考えると、時計(および電話側)の接続の問題に関するユーザーへの通知は、時計OSによっても処理されることがほぼ確実であるようです。私の推測では、ユーザーは接続の喪失を解決するか、それができない場合はWatchアプリを終了する機会が与えられるでしょう。開発者の観点からは、アプリが接続の未解決の損失とユーザーがアプリを正常に終了したことを区別できず、どちらの場合も同じ通知がWatch Extensionに送信されますが、これは推測にすぎません。
現在のWatchアプリのウォッチで実行されているサードパーティの開発者コードはなく、UIのみであるため、未解決の接続が失われてもデータが失われることはありません。 (iPhoneで実行される)Watch Extensionが、時計への接続が失われたためにOSによって終了された場合でも、通常のデータストレージとクリーンアップを実行できます。
現在の知識の点から、これはおそらく不可能でしょう。
Appleの WatchKit App Architecture から
シーンを選択すると、WatchKitはペアリングされたiPhoneにWatchKit拡張機能を起動し、そのシーンの管理に必要なオブジェクトを作成するよう指示します。シーンが完全に設定されると、Apple Watchに表示されます。WatchKitアプリとWatchKit拡張機能の間の情報の転送は、バックグラウンドで透過的に行われます。
つまり、コードはiPhoneで実行されます。 iPhoneが届かない場合、時計でアプリを実行することはできません。