极光推送数据之【送达数】

极光推送数据介绍

image.png

iOS

Item Value 备注
iOS目标数 匹配推送条件的 iOS 用户的数量。 下载并激活过的
iOS成功数 通知被推送到 苹果服务器 并被 苹果服务器 成功接收的数量。 如果 device token 变更,过期或者与推送环境不匹配则不会成功。
iOS点击数 本次苹果服务器推送,用户通过通知栏点击的次数。
iOS通知送达数 送达到设备并展示出来的通知数量。 与 “iOS 成功数” 区别在于是否真实送达到了设备上。该功能需借助 Service Extension ,启用请参考集成指南中的 高级功能 。新版本已加入并能正确统计

测试:


线上版推送

极光通道(Android)

Item Value 备注
极光 目标数 匹配Android推送的条件的用户数 1个月内与服务器有过连接的用户。如果超过1个月都没有与 JPush server 产生任何连接,那么将不向此用户推送)
极光 在线数 消息推送时,目标用户在线,通过在线下发的消息数。 用户长连接在线会通过在线下发,其余用户通恢复网络后触发离线消息。
极光 送达数 消息送达到客户端,并且服务端确认收到了客户端的应答的数量 包含普通Android用户通知或者自定义消息送达
极光 点击数 本次推送被用户点击的次数,针对Android通知的点击。
线上版推送

总结

1、iOS上6.5.1之前没有送达数的上报,成功数是发出去的通知数并不一定发到了用户手机上,到达数才更有意义。
2、在新版iOS6.5.2上已加上送达数统计,就能知道真实送达到了设备上的数目了。
3、安卓上的送达表示客户端真正收到的,这个数据与UM上当天的活跃数差不多。这个数肯定会比活跃数大,因为沉默用户也可以收到,这个数目大致代表安卓APP当时的装机量
4、现在是安卓的数据是正常的,iOS成功数太大是因为,iOS的装机量为成功数(398885)
5、真正发送成功的数目=送达数
以11月27日推送为例分析:
目前,
Android设备,10028个手机收到了推送,169人打开了。
iOS设备,真实发出398885条通知,x个手机收到了推送,1024人打开了。(x在iOS6.5.2生效)
6、通俗理解成功数:能正常接收通知的设备数。(开机了,已安装,有网)
APNs推送中的问题:

当应用从设备卸载后,推送的消息改如何处理??

我们知道当应用从设备卸载后,是收不到推送消息的。但是,如何让APNs和Provider知道不再向这台卸载了应用的设备推送消息呢?

针对这个问题苹果也已经帮我们解决了(那就是Feedback Service)。它是APNS的一部分,APNs会持续的更新Feedback service的列表,当我们的Provider将信息发给APNs服务器,APNs推送信息到我们的设备时,如果这时设备无法将消息推送到指定的应用(应用已经删除),就会向APNs服务器发送一个反馈信息,而这个信息就记录在Feedback service中。按照这种方式,Provider应该定时的去检测Feedback service的列表,然后删除在自己数据库中记录的存在于反馈列表中的deviceToken,从而不再向这些设备发送推送信息。连接Feedback service的过程同样使用长连接的方式,连接上后,直接接收由APNs传输给我们的反馈列表,传输完成后断开连接,然后我们根据这个最新的反馈列表在更新我们自己的数据库,删除那些不再需要推送信息的设备的deviceToken。

iOS 客户端集成极光送达数
下载SDK将下载的SDK里面的两个文件导入工程中:

SDK里需要的文件

  • 1、将 jpush-extension-ios-xxx.a 和 JPushNotificationExtensionService.h 两个文件引入到您的 Service Extentsion 工程中。
  • 2、添加 Framework:libz.tbd 和 libresolv.tbd。
  • 3、在AppDelegate.m引入#import "JPushNotificationExtensionService.h"//统计到达率
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    [JPushNotificationExtensionService jpushSetAppkey:jspushAppKey];
    [JPushNotificationExtensionService setLogOff];//上线时关闭日志
}
- (void)jpushNotificationCenter:(UNUserNotificationCenter *)center willPresentNotification:(UNNotification *)notification withCompletionHandler:(void (^)(NSInteger))completionHandler {
    ...
    completionHandler();
    // 上报送达
    [JPushNotificationExtensionService jpushReceiveNotificationRequest:notification.request with:^{}];
}
- (void)jpushNotificationCenter:(UNUserNotificationCenter *)center didReceiveNotificationResponse:(UNNotificationResponse *)response withCompletionHandler:(void(^)(void))completionHandler{
    ...
    completionHandler();
    // 上报送达
    [JPushNotificationExtensionService jpushReceiveNotificationRequest:response.notification.request with:^{}];
}
  • 4、打包上线

推荐阅读更多精彩内容