首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >iOS10 UNNotificationServiceExtension未调用

iOS10 UNNotificationServiceExtension未调用
EN

Stack Overflow用户
提问于 2016-09-23 15:00:08
回答 20查看 30.6K关注 0票数 29

我正在实现新的iOS10扩展来使用丰富的通知。我试着在推送通知上测试它,但是不起作用,我只是收到一个简单的通知,没有经过扩展。

我在官方网站和其他地方做了所有指定的事情:

  • 我已经启动并运行了我的应用程序,有了推送通知和正确的配置文件。
  • 我向我的应用程序添加了一个新的目标,一个通知服务扩展
  • 实现我自己的代码(这并不重要,因为它甚至没有进入新的类)
  • 此外,我还必须为这个扩展设置一个配置配置文件,我只使用一个通配符,我没有看到任何文档指定扩展目标是否必须启用推送通知功能,在这种情况下,我需要为这个扩展设置一个特定的配置,现在我只使用通配符prov,无论如何它匹配(它必须匹配)我在应用程序目标中使用的配置文件,并且只为应用程序目标启用推送通知功能。
  • 我添加了UNNotificationExtensionCategory和NSExtensionPointIdentifier。同时,我从服务器发送这个类别作为推送有效负载的一部分。

正如我所说,我收到通知,但从未通过分机。我看到了操作系统如何尝试加载扩展,但随后抛出一个没有相关描述的错误来识别问题:

代码语言:javascript
复制
Dec 31 21:00:00 iPhone SpringBoard(libextension.dylib)[51] <Notice>: calling plugIn beginUsing:   
Dec 31 21:00:57 iPhone pkd[86] <Notice>: assigning plug-in com.test.app.NotificationWithAttachmentExtension(1.0) to plugin sandbox   
Dec 31 21:03:57 iPhone pkd[86] <Notice>: enabling pid=51 for plug-in com.test.app.NotificationWithAttachmentExtension(1.0) 38BB5FF1-2597-42E0-B950-169DBFA80573 /private/var/containers/Bundle/Application/A8C47706-C0EC-4FB1-ABA7-0118372F6900/testapp.app/PlugIns/NotificationWithAttachmentExtension.appex   
Dec 31 21:00:53 iPhone SpringBoard(PlugInKit)[51] <Notice>: plugin com.test.app.NotificationWithAttachmentExtension interrupted   
Dec 31 21:03:56 iPhone SpringBoard(PlugInKit)[51] <Notice>: Hub connection error Error Domain=NSCocoaErrorDomain Code=4097 "connection to service named com.test.app.NotificationWithAttachmentExtension" UserInfo={NSDebugDescription=connection to service named com.test.app.NotificationWithAttachmentExtension}   
Jun 29 13:33:36 iPhone SpringBoard(libextension.dylib)[51] <Notice>: PlugInKit error in beginUsing:   
Jun 17 23:33:04 iPhone SpringBoard(libextension.dylib)[51] <Notice>: killing invalid plugIn   
Dec 31 21:00:00 iPhone SpringBoard(UserNotificationsServer)[51] <Error>: Extension error whilst trying to modify push notification F502-9B36: Error Domain=NSCocoaErrorDomain Code=4097 "connection to service named com.test.app.NotificationWithAttachmentExtension" UserInfo={NSDebugDescription=connection to service named com.test.app.NotificationWithAttachmentExtension}   
Dec 31 21:00:00 iPhone SpringBoard(UserNotificationsServer)[51] <Notice>: [com.test.app] Saving notification F502-9B36   
Dec 31 21:00:00 iPhone SpringBoard(libextension.dylib)[51] <Notice>: completed calling plugIn beginUsing: for pid: 0  

相关扩展.plist:

代码语言:javascript
复制
  <dict>
    <key>NSExtensionAttributes</key>
    <dict>
      <key>UNNotificationExtensionCategory</key>
      <string>attachmentCategory</string>
      <key>UNNotificationExtensionInitialContentSizeRatio</key>
      <real>1</real>
    </dict>
        <key>NSExtensionPointIdentifier</key>
        <string>com.apple.usernotifications.service</string>
        <key>NSExtensionPrincipalClass</key>
        <string>$(PRODUCT_MODULE_NAME).NotificationService</string>
  </dict>

有什么不对的吗?

EN

回答 20

Stack Overflow用户

回答已采纳

发布于 2016-12-20 18:05:29

最后,我让它正常工作,这就是我从这个问题上所记得的。

1)不要使用带有iOS10 beta版本的设备,因为我遇到的问题之一是因为我使用的是beta版本。

2)只有应用程序请求app应享权利,这对于扩展所使用的优先级并不是必需的。

3)我使用了一个与扩展id匹配的配置文件(不是通配符),无论如何,我无法确定它是否适合通配符。

4) NSExtensionAttributes不需要,只需使用NSExtensionPointIdentifier和NSExtensionPrincipalClass作为扩展.plist。除非您正在使用您自己的布局

5)这甚至可以使用iOS 9令牌注册方法。

6)不要忘记推送通知中出现的有效负载中的可变内容值,这是服务器通过扩展所需的唯一强制值。

我想这涵盖了我所有的问题

票数 15
EN

Stack Overflow用户

发布于 2017-02-02 14:28:35

还可以做的是检查部署目标中的扩展。我的设备设置在10.2,而我正在测试的设备(仍然)使用10.1

在将部署目标更改为10.0之后,UNNotificationServiceExtension实例被完美地调用

票数 75
EN

Stack Overflow用户

发布于 2017-05-09 20:38:22

如果你做的一切都是正确的,别忘了把它附加到这个过程中。

运行包含扩展名的应用程序之后:

  1. 在扩展中设置断点
  2. 通过PID或名称选择Debug /附加到进程
  3. 输入扩展目标的名称
  4. 触发推送通知
票数 25
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39663903

复制
相关文章

相似问题

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