2017-02-10 16 views
11

Я работаю над приложением, что обмен данными между iPhone и Apple, Watch, используя метод WCSessionsendMessage:replyHandler:errorHandler:WCErrorCodeDeliveryFailed: Payload не может быть доставлено

После внедрения этого метода я получаю сообщение об ошибке, как:

WCSession _onqueue_notifyOfMessageError : withErrorHandler: errorHandler: ДА с WCErrorCodeDeliveryFailed.

Ошибка = Невозможно доставить полезную нагрузку.

import Foundation 
import WatchKit 
import WatchConnectivity 

class ResultInterfaceController: WKInterfaceController, WCSessionDelegate { 

override func awake(withContext context: Any?) { 
    super.awake(withContext: context) 

    let applicationData = ["name": "ViratKohli"] 
    self.sendToPhone(data: applicationData) 
} 

func sendToPhone(data: [String: Any]) { 

    if WCSession.isSupported() { 

     let session = WCSession.default 
     session().delegate = self 
     session().activate() 

     if WCSession.default().isReachable { 

      session().sendMessage(data, replyHandler: {(_ replyMessage: [String: Any]) -> Void in 

       print("ReplyHandler called = \(replyMessage)") 
       WKInterfaceDevice.current().play(WKHapticType.notification) 
      }, 
      errorHandler: {(_ error: Error) -> Void in 

       print("Error = \(error.localizedDescription)") 
      }) 
     } 
    } 
} 
.... 

Любая помощь оценивается.

+0

Возможно, [это] (http://stackoverflow.com/questions/33200630/wcsession-sendmessagereplyhandler-error-code-7014-wcerrorcodedeliveryfailed) помогает вам? –

+0

@ ReinhardMänner nope. Это не – SahyadriChava

ответ

5
  1. У вас есть session(_ session: WCSession, didReceiveMessage message: [String : Any], replyHandler: @escaping ([String : Any]) -> Void) на WCSessionDelegate на стороне ios?
  2. Вы звоните replyHandler() внутри этого метода?

Обратите внимание, что session(_ session: WCSession, didReceiveMessage message: [String : Any]) будет называться только сообщениями, отправленными без ответаHandler.

+0

Это правильный ответ. Если предоставляется 'replyHandler', но другое приложение не реализует вариант с помощью' replyHandler', запрос будет терпеть неудачу. –