コンプリケーションを更新するために、時計の拡張機能から電話にメッセージを送信しようとしています。
AppDelegate.swift
var session = WCSession.defaultSession()
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
// Override point for customization after application launch.
if WCSession.isSupported(){
session.delegate = self
session.activateSession()
}
return true
}
func session(session: WCSession, didReceiveMessage message: [String : AnyObject], replyHandler: ([String : AnyObject]) -> Void) {
replyHandler(["scheduleNames":scheduleNames, "scheduleData":scheduleData])
}
ExtensionDelegate.swift
override init(){
super.init()
if WCSession.isSupported(){
session = WCSession.defaultSession()
session.delegate = self
session.activateSession()
}
self.sendMessage()
}
func sendMessage(){
print("Attempting to send message")
session.sendMessage(["Sender": "Complication"], replyHandler: {
reply in
print(reply.description)
}, errorHandler: {
error in
print(error.description)
})
}
しかし、時計シミュレーターを実行すると(電話アプリが開いていない場合)、受信します
エラー Domain=WCErrorDomain Code=7007 「ペアリングされたデバイスの WatchConnectivity セッションに到達できません。」
これは、物理的な電話と時計にもあります。
何が原因でしょうか?
更新
これは、内線から電話をかけたときにのみ発生します。時計アプリはメッセージを正常に送受信できます。また、 applicationDidFinishLaunching() から呼び出されたときに機能しますが、拡張デリゲートの他のものは機能しません。
更新
私は以前を修正し、今取得します
WatchConnectivity セッションにはデリゲートがありません。