📲
WCSessionを使ってファイル転送するときの注意点
watchOSアプリとiOSアプリでメッセージやファイルをやり取りする方法としてWCSessionがあります。
WCSession | Apple Developer Documentation
watchOS/iOSアプリの双方で以下のような初期化をすると双方向でやりとりが可能になります。
if WCSession.isSupported() {
let session = WCSession.defaultSession()
session.delegate = self
session.activateSession()
}
ファイルの送受信
送信
func transferFile(_ file: URL, metadata: [String : Any]?) -> WCSessionFileTransfer
transferFile(_:metadata:) | Apple Developer Documentation
受信
optional func session(_ session: WCSession, didReceive file: WCSessionFile)
session(_:didReceive:) | Apple Developer Documentation
注意点
If you want to keep the file referenced by this parameter, you must move it synchronously to a new location during your implementation of this method.If you do not move the file, the system deletes it after this method returns.
didReceiveで受信したファイルは当該メソッドからリターンするタイミングで削除されてしまいます、必要に応じて別の場所に移動するかコピーするなどしましょう。僕はこれに気がつかないで時間を溶かしました。
Discussion