そのため、Watch Connectivity を使用して、iPhone から Watch に配列を要求しています。
アイデアはsendMessage
時計からであり、iPhone はdidReceiveMessage
メソッド内の配列で応答します。
しかし、iPhone が応答していないようです。Watch からメッセージを送信すると、iPhone がアプリケーションを開くと思っていました。私はsendMessage
まだ運がないときでもアプリケーションを開こうとしました。十分に待つと、次のエラー メッセージが表示されます。
エラー Domain=WCErrorDomain Code=7012 「メッセージの返信に時間がかかりすぎました。」UserInfo={NSLocalizedDescription=メッセージの返信に時間がかかりすぎました., NSLocalizedFailureReason=返信のタイムアウトが発生しました.}
私がどこで間違っているのか誰か知っていますか?
アップルウォッチ
import WatchKit
import Foundation
import CoreData
import WatchConnectivity
class BookmarkedInterfaceController: WKInterfaceController, WCSessionDelegate {
var session : WCSession!
var objects: [AnyObject]!
@IBOutlet var table: WKInterfaceTable!
override func willActivate() {
super.willActivate()
//Check if session is supported and Activate
if (WCSession.isSupported()) {
session = WCSession.defaultSession()
session.delegate = self
session.activateSession()
}
sendMessageToIphone()
}
func sendMessageToIphone() {
if WCSession.defaultSession().reachable {
print("WCSession is reachabe")
let messageDict = ["Request": "iPhone Can You Give Me The Array"]
WCSession.defaultSession().sendMessage(messageDict, replyHandler: { (replyDict) -> Void in
print(replyDict)
}, errorHandler: { (error) -> Void in
print(error)
})
}
}
func session(session: WCSession, didReceiveMessage message: [String : AnyObject]) {
//recieving message from iphone
print("recieved message from iphone \(message)")
objects.append(message["Array"]!)
print("Objects array = \(objects)")
}
コンソール出力
WCSession は到達可能配列 nil です
iPhone アプリ デリゲート
import UIKit
import CoreData
import WatchConnectivity
@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate, WCSessionDelegate {
var window: UIWindow?
var session : WCSession!
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
//Check if session is supported and Activate
if (WCSession.isSupported()) {
session = WCSession.defaultSession()
session.delegate = self
session.activateSession()
}
}
func session(session: WCSession, didReceiveMessage message: [String : AnyObject], replyHandler: ([String : AnyObject]) -> Void) {
print("did recieve message from Watch")
let applicationData = ["Array":["One", "Two", "Three"]]
replyHandler(applicationData)
}
iPhone からは何も実行されていません。アプリを手動で開いても。