【问题标题】:WatchConnectivity sendMessage:replyHandler: don't work when linker have flag -ObjCWatchConnectivity sendMessage:replyHandler:当链接器有标志 -ObjC 时不起作用
【发布时间】:2016-05-28 15:22:03
【问题描述】:

我有一些外部库的项目,这个项目对这些库使用 -ObjC 链接器标志。没有 -ObjC 项目将崩溃。现在我想添加对 Watch OS 2 的支持。但我有问题:直到链接器有标志 -ObjC 方法 -sendMessage:replyHandler: return error like

Error Domain=WCErrorDomain Code=7014 "Payload could not be delivered." UserInfo={NSLocalizedDescription=Payload could not be delivered.}

我无法删除此标志 (-ObjC),但我的手表无法正常工作。如果用户点击按钮,我需要向我的 iPhone 发送一些信息。通过另一种发送信息的方式,我也遇到了问题。系统将消息添加到队列中并永久保存。有人有想法吗?

【问题讨论】:

  • watchKit 连接错误与链接器标志无关,我相信。您想在手表和手机之间发送什么样的对象?似乎您正在发送不受支持的对象类型,或者您没有在接收器(接收消息的设备)中实现委托方法
  • 这个链接器标志可以加载一些第三方代码。或框架。它可以有拦截器代码。我试图理解女巫代码可以阻止 WatchConnectivity。我发送 @{ @"data" : @"for send" }。

标签: ios objective-c watchkit apple-watch watchos-2


【解决方案1】:

链接器标志不应影响 WatchKit 连接。以下是几个故障排除过程。

  1. 您必须确保在接收消息的设备上实现了委托方法。

-(void)session:(WCSession *)session didReceiveMessage:(NSDictionary<NSString *,id> *)message

  1. 在您的 cmets 中,您说您发送的数据是一个简单的字典。 WatchKit 连接不允许您发送自定义类对象。

  2. 同时尝试重新启动您的模拟器或设备。特别是对于模拟器,Watchkit 连接经常失败。重建和重新启动会有所帮助。

这些是人们常犯(或我犯)的关于 Wathkit Connectivity 的错误。任何代码都不应阻止 Watchkit 连接。请仔细阅读 Apple 的文档,了解委托和协议的细节。如果您有任何问题,请告诉我。祝你好运!

【讨论】:

  • 我找到了原因,请看下面的答案。 Appodeal 库中的一些代码阻止了它。我不知道怎么做,但确实如此。并且链接器标志加载了阻塞代码。
【解决方案2】:

我找到了原因!它是 Appodeal 框架 v0.10.2,我附加了 Applodeal v0.10.3,现在我的手表代码运行良好。

【讨论】:

    【解决方案3】:

    T_T没解决T_T

    只有从现在开始修复它的方法,当出现错误时打开 ios 应用程序。正如他们所说的那样,它可能正在初始化过程。

    【讨论】:

      猜你喜欢
      • 2011-10-01
      • 1970-01-01
      • 1970-01-01
      • 2014-10-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-08-07
      • 1970-01-01
      相关资源
      最近更新 更多