iOS 10 服务扩展不一致

标签 ios iphone xcode apple-push-notifications serviceextension

虽然这里与另一个问题有相似之处: iOS 10 don't call Notification Service Extension

我希望针对具体的不当行为提供更具体的问题。考虑以下推送负载:

{  
   "service-alert":{  
       "title":"[Service]Title",
       "subtitle":"[Service]Subtitle",
       "body":"[Service]Body may be substituted."
   },
   "image":"https://some.small/thumbnail.jpg",
   "aps":{  
       "badge":1,
       "alert":{  
          "title":"[Default]Title",
          "subtitle":"[Default]Subtitle",
          "body":"[Default]A simple body of text."
       },
       "sound":"default",
       "mutable-content":1
   }
}

(“service-alert”字典用于测试覆盖支持它的设备的默认警报文本)

我在我的 iOS 10 设备 (iPhone 6+) 上的 Xcode 中进行调试,我在服务扩展中设置了一个断点以验证它是否有机会在呈现之前修改推送。

当我发送推送时,有时会命中服务扩展(断点命中),我可以验证推送有效负载是否正确,并且显示的推送仅显示默认的“aps”有效负载。没有图像。没有修改标题/副标题/正文。

我在 serviceExtensionTimeWillExpire 中的断点没有命中。通知机制似乎“有效”,但结果不正确。

当我再次发送完全相同的推送时,它起作用了。
图像是从“图像”URL 加载的,修改后的“服务警报”文本按设计显示。有时我必须发送相同的推送 2 或 3 次才能起作用,但在那之后它似乎是一致的。所以,如果我看到一次修改过的通知,从那时起,每个推送测试似乎都正常工作。

我觉得,但还没有确凿的数据来支持,一段时间的不活动会导致服务扩展被刷新,并且在被调用时唤醒速度太慢。如果是这样,这会使它变得无用,因为在收到推送时它永远不会完全清醒。

当前环境:

  • Xcode 8.2 测试版 (8C30a)
  • iOS 10.2 测试版 2、3 和 4
  • 调试方案

任何人都可以确认/否认 iOS 10 测试版和/或非测试版上的这种行为吗? 我是否发现了 10.2 错误,或者这是“正常行为”?

最佳答案

使用这个Pay load Push会自带默认声音

{
  "aps" : {
    "alert": {
      "title": "main title",
      "subtitle":"Subtitle",
      "body": "Custom message"
    },
      "badge" : 0,
      "sound" : "default"
    }
  }
}

关于iOS 10 服务扩展不一致,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40971187/

相关文章:

ios - Segue 和 displayMessage 函数不起作用 - Swift 3/4

ios - 如何从 TableView Controller 转到详细 Controller 并返回

iphone - 如何连接到需要用户名和密码的网站

ios - Xcode 6 使用本地安装的配置文件导出 IPA 文件

xcode - 如何在 Xcode 中打开优化?

ios - 未找到 Umbrella header 。无法构建 Objective C 模块。 Swift 和 Objective Framework 互操作性

ios - 如何使用 swift 创建一个闹钟应用程序?

iphone - UIButton Rounded Rect 不需要的 3D 效果

iphone - 使用 CFReadStream 进行异步 IO

swift - 如何删除 UI 元素的键(键值编码合规性)?