如何避免此错误:“显示自定义通知时间太长。回到静态。”?

时间:2015-03-30 07:57:15

标签: xcode swift watchkit

在Apple Watch模拟器上测试自定义长外观通知时遇到问题。调试器记录此错误:

WatchKit Extension[5230:156324] Took too long to show custom notification. Falling back to static.

如何解决此问题?

6 个答案:

答案 0 :(得分:4)

我在Xcode设置的默认代码中遇到了这个问题。我没有在didReceiveRemoteNotification中做任何操作,但错误仍然存​​在。

原因是我失败的原因是我的WKUserNotificationInterfaceController子类未连接到我的情节提要文件中的动态界面控制器

解决方案:

  1. 转到watchkit应用的故事板文件。
  2. 单击动态接口控制器
  3. 单击身份检查器(右窗格中的中间选项卡)
  4. 在“类”字段中,选择您的 WKUserNotificationInterfaceController子类(xcode已命名为我的 NotificationController)
  5. 瞧!
  6. Make sure your WKUserNotificationInterfaceController subclass is linked to your dynamic interface controller in the Identity inspector!

答案 1 :(得分:1)

之前我遇到过同样的问题。 在didReceiveRemoteNotification里面,你打电话给completionHandler(WKUserNotificationInterfaceTypeCustom);吗? 另外,你在这个功能中做了什么?如果花费太多时间,它将默认显示静态通知:

  

“使用静态通知界面定义简单版本   您的自定义通知界面。静态接口的目的   是在您的WatchKit事件中提供回退接口   extension无法及时配置动态接口   方式“

答案 2 :(得分:1)

尝试将自定义类名称设为NotificationController。 Xcode将其视为WKUserNotificationcontroller。它对我有用。

答案 3 :(得分:0)

如果您在处理程序中花费太长时间进行设置,则会发生这种情况。如果花费的时间太长,手表将默认为静态通知。

确保调用正确的完成块:

completionHandler(WKUserNotificationInterfaceTypeCustom);

调用完成处理程序块时,如果希望WatchKit显示静态接口,请指定WKUserNotificationInterfaceTypeDefault常量。

参考: https://developer.apple.com/library/ios/documentation/General/Conceptual/WatchKitProgrammingGuide/CustomzingthePushNotificationInterface.html

答案 4 :(得分:0)

在我的情况下,问题是创建的WatchKit扩展配置为Swift代码,而我的整个项目都在Objective-C中。

动态界面永远不会显示,总是切换到静态,在控制台中打印此帖子的错误。一旦我将WatchKit扩展更改为Objective-C,一切都运行良好。

答案 5 :(得分:-1)

如果您使用的是真正的手表,请尝试在“观看”中关闭“手腕检测” - > “常规”。