私はtransferFileを使用していますが、ファイルを送受信できますが、転送プロセスを完了するためにはiPhoneアプリを開く必要があります。iOSでwatchOSファイル転送をバックグラウンドで受信する方法
他のアプリを見ると、受信したデータをバックグラウンドで受信して処理することができます(たとえば、プッシュ通知をユーザーに送信するなど)。
私は彼らがこれをどうやって行ったのか疑問に思います。
私はtransferFileを使用していますが、ファイルを送受信できますが、転送プロセスを完了するためにはiPhoneアプリを開く必要があります。iOSでwatchOSファイル転送をバックグラウンドで受信する方法
他のアプリを見ると、受信したデータをバックグラウンドで受信して処理することができます(たとえば、プッシュ通知をユーザーに送信するなど)。
私は彼らがこれをどうやって行ったのか疑問に思います。
データを要求する時計接続のsendMessage機能を使用して時計アプリから電話にメッセージを送信する必要があります。これは、iPhoneアプリを起動させます。その後、電話であなたのdidreceivemessageメソッドでは、あなたのファイルを時計に送信するfiletransfer関数を使用する必要があります。
sendMessageを使用してメッセージが送信されるときを明確にするために、iphoneアプリケーションをバックグラウンドで起動させて、ファイル転送で応答できるメッセージを受信します。これがうまくいきたいです
ファイル転送を送信する前に、まずメッセージを送信する必要があります。ので、あなたのファイルがする、iOSアプリを起動しますインスタントメッセージを送信することができ、この
func session(_ session: WCSession, didReceiveMessage message: [String : Any], replyHandler: @escaping ([String : Any]) -> Void) {
if let messageFromWatch = message["Watch Message"] {
let messageData = messageFromWatch as! String
//Message From Watch to Activate Watch Connectivity Session
if messageData == "Activate" {
replyHandler(["Phone Message" : "Activated"])
}
}
私はこれを実装しましたが、携帯電話のWCSessionが無効になるまで時計が電話から離れていれば、ファイル転送はまだ完了しません。その後、転送を完了するために電話アプリを開く必要があります。これを回避する手段があることを願っていますが、他のアプリにも同じ制限があるようです。 – wazawoo
まずメッセージを送信する必要があります。私の答えにコード例を追加しました –
sendMessageはバックグラウンドで電話をスリープ状態にします。 transferFileは行いません。 –
watchappのようなものを実装する携帯電話側でごdidreceivemessage機能に
その後、あなたの時計の側にこのような何かを実装しますhttps://developer.apple.com/documentation/watchconnectivity/wcsession/1615687-sendmessage – abjurato
チップをありがとうございます。しかし、電話のWCSessionがもうアクティブでなくなっても、メッセージが届かないことに気づいています。これを回避する方法はありますか? – wazawoo