推送服务常见问题

如对小米推送有任何技术问题,请通过推送客服系统与我们联系http://dev.xiaomi.com/mipush/feedback/fe/

pushSDK接入 董墨涵
dongmohan@xiaomi.com   qq:345789288

概况问题

1. 如何申请接入?

感谢您选择小米推送,点此查看接入指南

 

2. 小米推送收费吗?

小米推送的基础服务目前是免费的。

 

3. 小米推送目前支持哪些平台?

目前支持iOS和Android两大平台。

 

4. 如何衡量推送的效果,提供哪些数据统计结果?

小米推送目前提供的数据统计如下:
1、推送数据:当日实时的推送量(区分单发和群发)和送达量,历史每天的推送量(区分单发和群发)和送达量

2、消息记录:每条消息的计划推送量、送达量和送达率、点击量和点击率

3、用户数据:需要开发者选择启用才开始记录,包括当日实时在线数和最高在线数,历史每天的最高在线数、新增用户数和日活跃用户数(推送的日活定义为当日长连接在线过的设备)

历史数据支持自定义时间段的查询和导出xls文件。

如何查询统计数据:

1、使用服务端SDK中的数据API(详情见服务端文档的2.1.7 Stats),直接拉取统计数据,可方便地与开发者现有的统计系统结合

2、登录开发者站,进入应用的推送服务内就可以查看推送统计数据了,如下图
推送统计入口

 

5. 小米推送服务有哪些限制?

目前针对首批合作开发者,小米推送服务没有设置任何推送频率的使用限制,之后出于防止恶意应用攻击等考虑,可能会增加对推送消息的频率、对单一用户可以接收的数量等做一些限制,但不会影响开发者的正常使用。而且所提供的推送服务完全免费。

对于单条消息,可携带的数据量最大不能超过4KB。

 

6. Android版推送中,多个app都使用推送时,他们会共享连接吗?

在最新MIUI上,会直接使用系统长连接通道,所有app会和系统共享一个长连接;在其他rom上,目前没有共享连接。多通道的设计从通道安全性和流量计算上会更加合理,并且小米推送的多通道实现可以保证多条长连接对系统电量的影响和一条长连接基本相同。

7. IOS推送服务迁移到小米推送时,旧版本用户如何完整迁移?

小米推送现在已支持批量导入DeviceToken的功能,帮助您将旧版本用户直接迁移到小米推送中。
迁移方法是给我们提供所有现有设备的DeviceToken列表(CSV或TXT格式,每行一个DeviceToken),我们会为这拨设备直接生成小米推送的设备标识(regid),这样即使这批用户不升级到包含小米推送SDK的应用新版本也依然能收到通过小米推送服务发出的消息。

如有迁移需求,请在集成小米推送的应用版本正式发布前联系我们进行导入。
联系方式:(请将#换成@)
戚辅光 qifuguang#xiaomi.com
赵宇斌 zhaoyubin#xiaomi.com

 

概念解释

1. 什么是标签?

开发者可结合自己的业务特征,给用户打上不同的标签(Topic)。在消息的推送过程中,开发者结合每条消息的内容和目标用户,选择每条消息所对应的标签,可以进行更精准的定向推送。

 

2. 什么是别名(Alias)?

应用可为每个设备ID(即RegID) 设定一个别名(Alias),方便开发者与自有的ID系统进行关联,避免因需要保存设备RegID与自有帐号的对应关系而给开发者带来额外的开发和存储成本。

 

3. 什么是透传?

透传类推送是指开发者可选择不通过任何预定义的方式展现,由应用直接接收推送消息。利用透传消息,开发者可自定义更多使用推送的方式和展现形式,从而能更为灵活地使用消息推送通道。

在一些拥有应用启动管理功能的Android系统上(如MIUI),透传的实现需要应用在后台处于启动状态。

 

工程技术问题

1. 服务器通过sdk已经发送了消息,Android客户端没有收到怎么是怎么回事?

如果你的app不在前台,请先阅读FAQ3。

遇到这个问题,请参考以下步骤:

步骤1,请确认demo中AndroidManifest.xml关于service,broadcast,permission的声明都copy到了你的AndroidManifest.xml中。注意,AndroidManifest中的PushMessageHandler需要定义在和MiPushClient.initialize调用在同一进程。

步骤2,打开客户端的日志。方法参照2。

步骤3,杀掉你app,重新启动app。观察日志。push的客户端的初始化需要完成以下几步:1,创建帐号;2,创建长连接connect,3,认证bind;认证结束即表示连接建立成功,可以收发消息。如果上述步骤中出错,日志都会打印出来,根据日志具体问题具体分析。

步骤4,如果步骤3连接建立正常,此时请检查服务器发送的返回结果。如果服务器显示发送成功,但是客户端没有及时收到。请将服务器端返回值,发送消息时的topic,alias或者regid以及客户端对应的regid发送到devpush@xiaomi.com。

 

2. 如何打开客户端push的日志方便调试?

参照DemoApplication中的用法,在class的静态代码块中执行:

static {

LoggerInterface newLogger = new LoggerInterface() {

 

@Override

public void setTag(String tag) {

 // ignore

}

 

 @Override

public void log(String content, Throwable t) {

Log.d(TAG, content, t);

}

 

@Override

public void log(String content) {

Log.d(TAG, content);

}

};

Logger.setLogger(newLogger);

}

 

3. push client sdk在混淆时出错怎么办?

client sdk已经混淆过了,不需要再混淆。请使用keep命令保留client sdk的内容;

-keepclasseswithmembernames class com.xiaomi.**{*;}
-keep public class * extends com.xiaomi.mipush.sdk.PushMessageReceiver

注:混淆时遇到 Warning: com.xiaomi.push.service.a.a: can’t find referenced method void setExact(int,long,android.app.PendingIntent)’ in class android.app.AlarmManager这个提示,请将安卓SDK到19以上(包含19),或者添加 -dontwarn com.xiaomi.push.service.a.a

还有没解决的问题?欢迎联系我们!

小米推送对外技术客服系统:http://dev.xiaomi.com/mipush/feedback/fe/