問題タブ [wcsession]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
ios - Core Data ファイルを Swift 2.0 の Apple Watch に同期する
Core Data によって作成された SQLite ファイルがあり、iPhone から Apple Watch にファイルを転送したいと考えています。私はそれをすることを選びますWCSession
。Apple Watch ではファイルを受信できますが、iPhone ファイルに保存したデータは見つかりませんでした。私の問題を解決するためのトリックや方法はありますか?
ファイルを転送するために以下のコードを使用しました。
バックグラウンドでいつでもデータを正確に同期する他の方法はありますか? watchOS 2.0 でアプリ グループを使用できますか?
ios - AppDelegate で func セッション didReceiveMessage を呼び出す
iPhone で特定の VC がアクティブになっている場合、ユーザーはすでにフォアグラウンドでツイート (watch で口述されたテキスト) を実行できます。
しかし、ここで一歩前進して、このツイートを Backgroundで送信したいと思います。そのため、ユーザーが時計アプリでテキストを口述すると、iPhone のアプリが閉じられていてもテキストがツイートされます。
定義には次のコードを使用しました。
メソッドの場合:
しかし、それはfor-およびbackgroundでは機能していません。
それを修正する方法は?
ios - WCSession activateSession exc_bad_access クラッシュ
に問題がありWCSession activateSession
ます。メソッドにこのコードを追加しましたが、呼び出しviewDidLoad
時にクラッシュしていactivateSession
ます。sendMessage もクラッシュしています。
私はその問題がスレッドにあると思っていましたが、それとこれらの呼び出しをメインスレッドでデバッグしています。
何が問題なのですか?
ここにクラッシュログがあります:
スレッド#1:TID = 0x10AA81、0x0000000110917817 libobjc.a.dylib objc_msgSend + 23, queue = 'com.apple.main-thread', stop reason = EXC_BAD_ACCESS (code=1, address=0x408f59958d3)
frame #0: 0x0000000110917817 libobjc.A.dylib
objc_msgsend + 23フレーム#1:0x000000010be8fd1c +[CRWCSessionDelegateProxy performSwizzledWCSessionActivateSession:] + 62
frame #2: 0x000000010be8f869 myApp
myapp + [crwcsessiondelegateproxy activatesessionforwcsession:disfcatd 3:0 + 72 frame __72+[CRWCSessionDelegateProxy swizzleWCSessionActivateSessionWithDispatch:]_block_invoke + 37
* frame #4: 0x000000010bd6c4e4 myApp
asplicatedsession:frame 0x00007ff588d06800, _cmd="application:didFinishLaunchingWithOptions:", application=0x00007ff588c00850, launchOptions=0x0000000000000000) + 5236 at FPMAppDelegate.m:188 frame #5: 0x000000010e50d1f1 UIKit -[UIApplication _handleDelegateCallbacksWithOptions:isSuspended:restoreState:] + 272
frame #6: 0x000000010e50e397 UIKit
-[UIApplication _callInitializationDelegatesForMainScene:transitionContext:] + 3415 frame #7: 0x000000010e514cc6 UIKit -[UIApplication _runWithMainScene:transitionContext:completion:] + 1760
frame #8: 0x000000010e511e7b UIKit
- [UIApplication workspaceDidEndTransaction:] + 188 フレーム #9: 0x0000000113203754 FrontBoardServices-[FBSSerialQueue _performNext] + 192
frame #10: 0x0000000113203ac2 FrontBoardServices
-[FBSSerialQueue _performNextFromRunLoopSource] + 45 frame #11: 0x0000000110db4a31 CoreFoundation __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ + 17
frame #12: 0x0000000110daa95c CoreFoundation
__CFRunLoopDoSources0 + 556 frame #13: 0x0000000110da9e13 CoreFoundation __CFRunLoopRun + 867
frame #14: 0x0000000110da9828 CoreFoundation
CFRunLoopRunSpecific + 488 frame #15: 0x000000010e5117cd UIKit -[UIApplication _run] + 402
frame #16: 0x000000010e516610 UIKit
UIApplicationMain + 171 frame #17: 0x000000010bcdc8cf myApp main(argc=1, argv=0x00007fff540ca3c0) + 111 at main.m:16
frame #18: 0x0000000111ab292d libdyld.dylib
start + 1
ios - WCSession ファイル転送の問題
親デバイスから Apple Watch にファイルを送信する際に問題が発生しています。場合によっては、ファイルが通過して完全に解析されることがあります。それ以外の場合は、ファイル転送を開始しますが、失敗session:(WCSession *)session didReceiveFile:(WCSessionFile *)file
し、Apple Watch でメソッドを実行することさえありません。
親デバイスのコードは次のとおりです。
Apple Watch のコードは次のとおりです。
コード自体と関係があるかどうかさえわかりません。ファイル転送が時々失敗すると思いますが、デバッグするためにエラーを出力する場所が見つかりません。
ここで誰かが私に洞察を与えることができますか?
iOS 9.2 && WatchOS 2.1
[FileSystem_Helper removeFile: (NSString *)filePath] のコードは次のとおりです。
[FileSystem_Helper writeAudioToAppGroupsWithData] は次のとおりです。
watchkit - didFinishUserInfoTransfer は正常に終了しましたが、まだ未解決の UserInfoTransfers オブジェクトがあります
最初に、「transferUserInfo」メソッドを使用して、辞書を iPhone から Apple Watch に送信します。
次に、次のデリゲート コールバック メソッド「didFinishUserInfoTransfer」を使用して、転送の状態を確認しています。
Apple のドキュメントでは、 didFinishUserInfoTransfer メソッドについて次のように述べています。
これまでのところとても良いです-理解しました。しかし今、私には理解できないことがあります:
didFinishUserInfoTransfer が入力され、エラー == nil の場合、一体なぜ session.outstandingUserInfoTransfers COUNT がゼロよりも大きくなるのですか??????
Apple のドキュメントによると、didFinishUserInfoTransfer の唯一の非エラー状態は、転送が終了したときでなければなりません!! 少し終わっていないようです... なぜ???
これについて明確にしていただきありがとうございます。
また、これらの 3 つの方法を正しく使用する方法についてのコード例も嬉しいです。(すなわち
session.transferUserInfo(ディクティ)
didFinishUserInfoTransfer
session.outstandingUserInfoTransfers)
ios - WCSession にデータがあるかどうかを確認する
iWatch と iPhone アプリの間でデータを渡すために WCSession を使用しています。時計が開いたときに電話がすでにデータを送信しているかどうかを確認する方法が必要です。
didReceiveApplicationContext、didReceiveUserInfo、didReceiveMessage を試しましたが、データがある場合にのみ呼び出されます。タイマーは唯一の方法ですか?
ios - WatchConnectivity の到達可能性の損失をシミュレートする方法はありますか?
時計が電話との接続を失ったり回復したりした場合 (sessionReachabilityDidChange) と、メッセージを送信しようとして接続がない場合 (sendMessage エラーをシミュレートしようとしています) について、アプリの機能をテストしようとしています。
コードまたは iPhone/Watch Simulator でこれを行う方法はありますか? また、電話自体でこれをシミュレートする方法はありますか? Bluetooth/Wifi をオフにできることはわかっていますが、時計へのデバッグ接続を失うことなくオフにできるようにしたいと考えています。
ios - エラー: 「メッセージの返信に時間がかかりすぎました」 - WCSession Watch OS2
そのため、Watch Connectivity を使用して、iPhone から Watch に配列を要求しています。
アイデアはsendMessage
時計からであり、iPhone はdidReceiveMessage
メソッド内の配列で応答します。
しかし、iPhone が応答していないようです。Watch からメッセージを送信すると、iPhone がアプリケーションを開くと思っていました。私はsendMessage
まだ運がないときでもアプリケーションを開こうとしました。十分に待つと、次のエラー メッセージが表示されます。
エラー Domain=WCErrorDomain Code=7012 「メッセージの返信に時間がかかりすぎました。」UserInfo={NSLocalizedDescription=メッセージの返信に時間がかかりすぎました., NSLocalizedFailureReason=返信のタイムアウトが発生しました.}
私がどこで間違っているのか誰か知っていますか?
アップルウォッチ
コンソール出力
WCSession は到達可能配列 nil です
iPhone アプリ デリゲート
iPhone からは何も実行されていません。アプリを手動で開いても。
ios - iPhone から実際のデバイスの iWatch (AppleWatch) にデータが転送されない
iOS アプリがあり、AppleWatch でその拡張機能をプログラムしました。transferUserInfo メソッドを使用して、appleWatch 拡張機能にデータ (NSDictionary) を送信しています。シミュレーターではすべてが機能しますが、実際のデバイスでアプリケーションを実行しようとすると、iPhone がデータを送信しているにもかかわらず、iWatch が何も受信していないようです (送信者側をデバッグしたときにこの原因が見つかりました)。
両側で WCSession を構成しました。データを受信するクラスで WCSessionDelegate を適合させました。私は session:didReceiveUserInfo: メソッドを使用して ExtensionDelegate でデータを受信していますが、シミュレーターではすべて正常に動作すると言ったように、実際のデバイスでは何も転送されていません。
誰が問題が何であるかの手がかりを持っていますか?
コードは次のとおりです。送信者側で:
私のクラス MensaViewController.m 内
ishDictionary は viewDidLoad メソッド内で宣言され、データが含まれています。
レシーバー側 (Watch Extension) で WCSession を構成し、次のように ExtensionDelegate.m でデータを受信します。
そして、私はデータを受け取るためにこの方法を持っています:
xcode7 - WCSession sendMessage が機能しない
Watch 拡張機能でこのコードを呼び出しています (実際に実行され、ブレークポイントでチェックされます):
私の親アプリでは、私は持っています:
上記のコードは、アプリの起動時に実行され、実装しました:
しかし、それは決して呼び出されません。動作するようになったことはありますが、今では、Watch アプリと iOS アプリを一緒に適切にデバッグできません (起動しない、タイムアウトなど)。それらを次々とデプロイします。Watch 拡張機能をデバッグしているときに、sendMessage...
メソッドが呼び出されていることを確認できます (数分後、エラー ハンドラーがタイムアウト エラーで呼び出されます)。問題はありません。WCSession
メイン アプリを起動すると、関連するコードがヒットしていることもわかります。ただし、Watch アプリを起動して通信するときに、didReceivedMessage...
呼び出されることはありません。
iPhone と Watch の両方からアプリを削除し、両方のデバイスを再起動し、Mac を再起動して再試行しましたが、役に立ちませんでした。私は何を間違っていますか?