ios统计推送到达率

1,794 阅读2分钟

大家不能完全统计到达率的主要问题就是在app关闭的时候,接收到的推送没有办法统计。 苹果ios10之后提供了推送扩展来帮助用户,自定义推送UI,那么我们便可以使用这个扩展来进行下一步的统计。 本文主要讲,如何使用这个扩展进行统计,和统计过程中可能会遇到的问题

1、给项目添加 扩展

1、添加target

截屏2021-04-26 下午3.52.47.png

2、选择扩展

截屏2021-04-26 下午3.53.09.png

3、填写扩展名称,例如我的 notificationServer 4、xcode 会自动生成一个扩展文件,并自动携带两个方法。如图

截屏2021-04-26 下午3.53.30.png

这个方法就是程序在后台的时候,接收到通知会调用。 所以我们在这个方法里面进行,埋点统计,或者接口数据上报就可以。

- (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要选择扩展, 不是直接跑主项目。

截屏2021-04-26 下午4.03.03.png 然后依赖主项目 run

2、你扩展的 Bundle id 应该和主项目 相似。

例如 主项目是 com.company.test 那你的扩展应该是 com.company.test.NotificationServer

但是这点你不用担心,你添加扩展的时候就是这么自动生成的,你不用动就可以了。

3、注意你的 扩展支持版本号和主项目一致。

不然可能收不到通知。 因为他默认创建的时候是最高版本。 这个需要改一下。

截屏2021-04-26 下午4.08.27.png

4、这个扩展是用于修改 富文本的, 所以在推送的时候需要加一个

"mutable-content":1 这样来标记一下,你的扩展才能收的到回调。 如果是极光推送的话,默认是有这个字段的。 如下图

WeChat3cc5b0e9ca47183cbfc0f332bdb7079b.png

所以推送的时候,可以使用你们的第三方后台试试。

5、埋点上报

扩展是一个单独的Target,不能像主项目一样,想依赖什么库就依赖什么库, 例如我们项目用的神策埋点,他们并没有对扩展进行支持。 那你的推送扩展库怎么上报埋点数据呢 ?

联系了神策的客服,最终给的解决方案就是使用 group 共享数据。 收到推送的时候数据存到本地,然后打开app的时候,在上报。 这个就数据实时性会差点。

如果你们的埋点,可以直接依赖上传,那就最好了。

以上就是我遇到的一些小问题。希望我的文章对你有所帮助。 最后 Good Luck My Baby。