大家不能完全统计到达率的主要问题就是在app关闭的时候,接收到的推送没有办法统计。
苹果ios10之后提供了推送扩展来帮助用户,自定义推送UI,那么我们便可以使用这个扩展来进行下一步的统计。
本文主要讲,如何使用这个扩展进行统计,和统计过程中可能会遇到的问题
1、给项目添加 扩展
1、添加target
2、选择扩展
3、填写扩展名称,例如我的 notificationServer
4、xcode 会自动生成一个扩展文件,并自动携带两个方法。如图
这个方法就是程序在后台的时候,接收到通知会调用。
所以我们在这个方法里面进行,埋点统计,或者接口数据上报就可以。
- (void)didReceiveNotificationRequest:(UNNotificationRequest *)request withContentHandler:(void (^)(UNNotificationContent * _Nonnull))contentHandler API_AVAILABLE(ios(10.0))
复制代码
第二个方法是调用快过期的时候调用的。
// Called just before the extension will be terminated by the system.
// Use this as an opportunity to deliver your "best attempt" at modified content, otherwise the original push payload will be used.
- (void)serviceExtensionTimeWillExpire
复制代码
注意
1、测试的时候target要选择扩展, 不是直接跑主项目。
然后依赖主项目 run
2、你扩展的 Bundle id 应该和主项目 相似。
例如 主项目是 com.company.test 那你的扩展应该是 com.company.test.NotificationServer
但是这点你不用担心,你添加扩展的时候就是这么自动生成的,你不用动就可以了。
3、注意你的 扩展支持版本号和主项目一致。
不然可能收不到通知。 因为他默认创建的时候是最高版本。 这个需要改一下。
4、这个扩展是用于修改 富文本的, 所以在推送的时候需要加一个
"mutable-content":1
这样来标记一下,你的扩展才能收的到回调。
如果是极光推送的话,默认是有这个字段的。 如下图
所以推送的时候,可以使用你们的第三方后台试试。
5、埋点上报
扩展是一个单独的Target,不能像主项目一样,想依赖什么库就依赖什么库, 例如我们项目用的神策埋点,他们并没有对扩展进行支持。 那你的推送扩展库怎么上报埋点数据呢 ?
联系了神策的客服,最终给的解决方案就是使用 group 共享数据。 收到推送的时候数据存到本地,然后打开app的时候,在上报。 这个就数据实时性会差点。
如果你们的埋点,可以直接依赖上传,那就最好了。
以上就是我遇到的一些小问题。希望我的文章对你有所帮助。
最后 Good Luck My Baby。