推送历史 - 消息详情 - iOS 送达数是新增的一个统计项,需要实现上报才能展示。

1. 定义:

送达到设备并展示出来的通知数量,与 “iOS 成功数” 区别在于是否真实送达到了设备上。
(iOS 成功数代表消息成功发至了 Apple 服务器,等待 Apple 服务器的下发)

2. 上报条件

- iOS 10 设备,集成 3.0.7 及以上版本的 iOS SDK

- 借助 Service Extension 进行上报,推送消息时必须勾选 “可选设置”中 mutable-content 选项(调用 API 请设置 Notification → iOS → mutable-content 字段为 true

3. 功能实现方法:

文档,建议参考 JPush SDK 包中的 example。

- 将 jpush-extension-ios-xxx.a 和 JPushNotificationExtensionService.h 两个文件引入到您的 Service Extentsion 工程中。
- 添加 Framework:libz.tbd 和 libresolv.tbd。
- 调用[ [jpushSetAppkey:] 方法](https://docs.jiguang.cn/jpush/client/iOS/ios_api/#notification-service-extension)设置您的 appkey,请注意这里的 appkey 应该和您极光应用的 appkey 相同。
- 调用[ [jpushReceiveNotificationRequest:] 方法](https://docs.jiguang.cn/jpush/client/iOS/ios_api/#notification-service-extension)上报您的 apns 消息,完成送达统计;在该方法的 block 回调中进行 apns 的显示。

附加问题:jpush-extension-ios-xxx.a 与 jcore-ios-xxx.a 冲突

集成 3.0.7 及以上版本的 iOS SDK 运行后报如下错误, jpush-extension-ios-xxx.a 与 jcore-ios-xxx.a 冲突

ld: warning: object file (/Users/rongyao/huangyq/48_sha/xwolves48/Program/client/frameworks/runtime-src/proj.ios_mac/Lib/jpush-extension-ios-1.1.1.a(JPushExtensionTCPSocket.o)) was built for newer iOS version (10.0) than being linked (8.0)
ld: warning: object file (/Users/rongyao/huangyq/48_sha/xwolves48/Program/client/frameworks/runtime-src/proj.ios_mac/Lib/jpush-extension-ios-1.1.1.a(JPushExtensionSRVResolver.o)) was built for newer iOS version (10.0) than being linked (8.0)
duplicate symbol __sisHostDomains in:
    /Users/rongyao/huangyq/48_sha/xwolves48/Program/client/frameworks/runtime-src/proj.ios_mac/Lib/jpush-extension-ios-1.1.1.a(JPushExtensionSession.o)
    /Users/rongyao/huangyq/48_sha/xwolves48/Program/client/frameworks/runtime-src/proj.ios_mac/Lib/jcore-ios-1.2.0.a(JPUSHAddressController.o)
ld: 1 duplicate symbol for architecture armv7

这代表你们没有按照要求将 extension 的文件引入到 Service Extentsion 工程中,而是放在了主工程。

请务必参考 demo 配置,如下图,如果你不需要上报通知送达数,则可以删除 extension 相关的文件。
null


如果对你有帮助,点个赞 呗ლ(╹◡╹ლ)

点这里返回常见问题目录,不吹不黑,收藏本帖可以解决你 90% 的问题 (ノ◕ω◕)ノଘ_ଘ