1

コンプリケーションを更新するために、時計の拡張機能から電話にメッセージを送信しようとしています。

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 セッションにはデリゲートがありません。

4

1 に答える 1