首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >回复消息: WCSession错误码7014 (WCErrorCodeDeliveryFailed)

回复消息: WCSession错误码7014 (WCErrorCodeDeliveryFailed)
EN

Stack Overflow用户
提问于 2015-10-19 00:56:26
回答 10查看 11.1K关注 0票数 22

我有一个WatchOS2应用程序,它通过WCSession方法sendMessage:replyHandler:errorHandler:与iOS应用程序通信

iOS应用程序正确响应,但我经常收到域WCErrorDomain的代码为7014的错误:"Payload not be delivered“

当iOS应用程序不在前台时,这种情况更常见。

4.我没有找到解决这个问题的办法,我希望你们中有人知道解决这个问题的办法

EN

回答 10

Stack Overflow用户

发布于 2016-09-08 13:46:38

对于在iOS10 beta 6和GM上有问题的任何人,并且您正在使用Swift3,解决方案是将iOS应用程序中的委托函数头更改为以下内容:

代码语言:javascript
复制
    func session(_ session: WCSession, didReceiveMessage message: [String : Any], replyHandler: @escaping ([String : Any]) -> Void) {

注意@转义和Any类型,而不是AnyObject类型。

票数 13
EN

Stack Overflow用户

发布于 2015-10-22 15:03:57

试试这个,这个解决了我的问题。在InterfaceController中,添加以下方法以将数据传递给phone。

代码语言:javascript
复制
-(void)sendDataToPhone:(NSDictionary* _Nonnull)dictData
{
    if(WCSession.isSupported){

        WCSession* session = WCSession.defaultSession;
        session.delegate = self;
        [session activateSession];

        if(session.reachable)
        {
            [session sendMessage:dictData replyHandler: ^(NSDictionary<NSString *,id> * __nonnull replyMessage) {

                dispatch_async(dispatch_get_main_queue(), ^{
                    NSLog(@".....replyHandler called --- %@",replyMessage);
                    // Play a sound in watch
                    [[WKInterfaceDevice currentDevice] playHaptic:WKHapticTypeSuccess];
                });
            }
                    errorHandler:^(NSError * __nonnull error) {
                        dispatch_async(dispatch_get_main_queue(), ^{
                            NSLog(@"Error = %@",error.localizedDescription);
                        });
                    }
             ];
        }
        else
            NSLog(@"Session Not reachable");
    }
    else
        NSLog(@"Session Not Supported");
}



#pragma mark - Standard WatchKit delegate

-(void)sessionWatchStateDidChange:(nonnull WCSession *)session
{
    if(WCSession.isSupported){
        WCSession* session = WCSession.defaultSession;
        session.delegate = self;
        [session activateSession];

    }
}

在手机端,添加以下代码,用于从watch接收数据。

在didFinishLaunchingWithOptions中添加以下内容。

代码语言:javascript
复制
// Allocating WCSession inorder to communicate back to watch.
    if(WCSession.isSupported){
        WCSession* session = WCSession.defaultSession;
        session.delegate = self;
        [session activateSession];
    }

现在添加WCSessionDelegate。

代码语言:javascript
复制
#pragma mark - WCSession Delegate

- (void)session:(WCSession *)session didReceiveMessage:(NSDictionary<NSString *, id> *)message replyHandler:(void(^)(NSDictionary<NSString *, id> *replyMessage))replyHandler
{
    if(message){
        NSData *receivedData = [message objectForKey:@"AudioData"];
        NSDictionary* response = @{@"response" : [NSString stringWithFormat:@"Data length: %lu",(unsigned long)receivedData.length]} ;
        replyHandler(response);
    }
}


#pragma mark - Standard WatchKit Delegate

-(void)sessionWatchStateDidChange:(nonnull WCSession *)session
{
    if(WCSession.isSupported){
        WCSession* session = WCSession.defaultSession;
        session.delegate = self;
        [session activateSession];

        if(session.reachable){
            NSLog(@"session.reachable");
        }

        if(session.paired){
            if(session.isWatchAppInstalled){

                if(session.watchDirectoryURL != nil){

                }
            }
        }
    }
}

希望本文能对您有所帮助:)

票数 4
EN

Stack Overflow用户

发布于 2016-12-17 18:09:06

对不起,我没有足够的声誉来评论答案。我的问题在彼得·罗伯特的回答中得到了解决:随着Swift 3的出现,WCErrorCodeDeliveryFailed出现了,解决方案只是将AnyObject更改为replyHandlers上的Any。

代码语言:javascript
复制
    func session(_ session: WCSession, didReceiveMessage message: [String : Any], replyHandler: @escaping ([String : Any]) -> Void) {
//code
 replyHandler (answer as [String : Any])
}
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33200630

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档