快出海  > 小米应用商店  >  小米应用商店:小米推送常见问题汇总(下)

小米应用商店:小米推送常见问题汇总(下)

作者:小米开放平台
时间:2020-09-21

四、接入过程问题

1.第一次接触安卓版小米推送服务,使用你们的demo没有成功,怎么办?

第一次使用小米推送服务(安卓版),请仔细阅读如下指南:小米推送Android版快速接入指南(https://dev.mi.com/console/doc/detail?pId=100)

一般注册推送服务没成功,常见的原因如下:

1)没有开启推送服务。使用推送服务前需要登录开发者账号、创建应用、开通推送服务3个步骤,缺一不可。

2)没有正确配置AndroidManifest.xml文件。需要特别注意包名、权限部分,包名需要跟开发者站点上开通推送服务的一致,权限的前缀需要改成包名。

3)系统时间错误。由于小米推送服务需要使用https请求向服务器注册一个匿名账号,在次过程中如果系统时间错误,会引起https过期,导致注册不成功。

4)联网被阻止。小米推送服务客户端需要使用5222和443两个端口,如果在公司内网,需要联系IT部门把这两个端口开放。同时需要检查应用的联网是否会被一些手机安全助手阻止。需要特别注意的是,在MIUI系统上,长连接是由“小米服务框架”这个系统应用维护的,因此需要确保这个应用的联网并没有被阻止。

2.为什么onNotificationMessageArrived方法没被调用到?

首先,确认接入是否正确,这个方法需要在manifest中添加<action android:name=”com.xiaomi.mipush.MESSAGE_ARRIVED”/>这个action。

在MIUI系统上,这个方法的调用需要同时满足如下两个条件:

1)新版的MIUI。这个特性是在2015年才加进小米推送服务的,因此需要MIUI升级到较新的版本才能调用这个方法。

2)需要应用驻留后台。小米推送服务的通知栏消息,是可以在应用不启动的前提下,就弹出通知栏消息的,在这种情况下,由于MIUI的自启动管理,限制了应用不能在被杀后被后台唤醒,所以推送消息不能直接唤醒应用执行这个方法。

3.为什么我在onNotificationMessageClicked方法中的startActivity不能调起目标界面?

由于onNotificationMessageClicked中传入的context是application context,本身没有activity栈,因此需要在创建activity时候加入NEW_TASK的flag:Intent i=new Intent(context,MyActivity.class);i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);context.startActivity(i);

4.为什么我的设备在调用registerPush的时候会出现no account的错误?

在app第一次在一台设备上注册推送服务时,sdk会通过https请求,从小米推送服务器生成一个匿名账号。这个错误是由于这个请求失败导致的。一般请求失败常见的原因包括如下几种:

1)系统时间错误。时间错误会导致https在校验证书有效期的时候,出现证书过期,导致https请求失败。

2)网络原因。这个大部分的原因都是设备架了代理服务器或连了vpn,如果排除这些原因,就检查一下app是否申请了联网权限,是否被什么安全软件阻止了登录,公司wifi是否能用,等等。

3)如果是在MIUI系统上,生成匿名账号是在一个叫小米服务框架的系统app上完成的,还需要检查这个app的联网是不是在安全中心的联网控制中被手动关闭了。

5.我们iOS应用还没发布到苹果商店,是不是正式包还收不到消息,要等发布了才行?

将MISDKRun设置为online,然后使用adHoc的证书即可收到生产环境的消息;

6.如何进行通知分类、实现通知栏多条消息并存?

可以使用notifyId(Integer id)可选项。

https://dev.mi.com/console/doc/detail?pId=1278#_3_3

默认情况下,通知栏只显示一条推送消息。如果通知栏要显示多条推送消息,需要针对不同的消息设置不同的notify_id(相同notify_id的通知栏消息会覆盖之前的)。

7.注册推送,SDK日志提示“MIIDManager startMIIDUpdateListener failed cause lack of GET_ACCOUNTS permission”。

这是推送的一种消息推送方式,不影响正常使用;当sdk执行按miid推送消息的时候,会检查一下app有没有获得miid的权限,如果没有,会打印相关消息。

8.注册推送提示“Don't send message before initialization succeeded!”

Mipush sdk内部逻辑,检测消息通道是否顺畅,不影响推送功能正常使用。

9.Mipush是否支持通知栏自定义显示图片/如何自定义通知栏样式?

SDK可以根据推送消息中指定的layout文件和填充内容,自由定制展示样式。在MIUI中,通知展示由系统通道负责,需要MIUI升级后才支持自定义通知。具体使用方法可以参考《服务端Java SDK文档》。另外,关于自定义通知栏layout的配置目前只支持app本地资源已有的图片和布局文件,可以通过这个服务器自定义布局显示出来;暂不支持网络图片下载。

10.推送消息支持静默推送(即无声音、无灯光、无震动)吗?

支持,可以在构建消息时调用notifyType(Integer type)方法,将type设置成0即可。

notifyType表示设置通知类型,type类型支持以下值:

·1:使用默认提示音提示

·2:使用默认震动提示

·4:使用默认led灯光提示

·-1(系统默认值):以上三种效果都有

·0:以上三种效果都无,即静默推送。

并且支持1,2,4的任意OR运算来实现声音、震动和闪光灯的任意组合。

11.timeToLive最大时长为多少?

timeToLive表示消息的生命周期,若用户离线,设置消息在服务器保存的时间,单位:ms,服务器默认最长保留14天。

12.如何开启/关闭app在前台时的通知弹出?

应用在前台的情况下,通知消息到达客户端后是否弹出通知可以通过服务端来设置。服务端调用Message.Builder类的extra(String key,String value)方法将EXTRA_PARAM_NOTIFY_FOREGROUND的值设置为"0"或者"1"。当EXTRA_PARAM_NOTIFY_FOREGROUND值为”1″时,app会弹出通知栏消息;当EXTRA_PARAM_NOTIFY_FOREGROUND值为”0″时,app不会弹出通知栏消息。注:默认情况下会弹出通知栏消息。

示例:

Message message = new Message.Builder()

          .title(title)

          .description(description).payload(messagePayload)

          .restrictedPackageName(MY_PACKAGE_NAME)

          .passThrough(0)

          .notifyType(1)

          .extra(Constants.EXTRA_PARAM_NOTIFY_FOREGROUND, "0")

          .build();

13.给IOS10系统推送消息时,如何设置title?

如果使用的Java或PHP的SDK,可以使用IOSBuilder的title、subtitle、body方法。

14.如何理解消息回执中的barStatus参数?

barStatus表示用户是否允许该app的消息在通知栏展示。barStatus的值只和用户本地的配置有关系。用户设置允许app弹出通知,返回Enable;用户设置不允许app弹出通知,返回Disable;本地获取状态出现异常时,返回Unknown。Disable时,如果有消息到达,不会显示通知;Enable时,如果有消息到达,会显示通知。

15.为什么有时候获取到的regID是非正式环境的?(平台类型是iOS类型)

客户端获取到的regId环境,与MiSDKRun有关。MiSDKRun=debug为测试环境,MiSDKRun=online为正式环境。

16.IOS平台接入时是否支持swift?

支持,具体用法请参见文档:https://dev.mi.com/console/doc/detail?pId=98#_3_13

17.使用推送运营平台发送消息时,如何设置notifyId?

可以在“通知分类”输入框里设置。

faq_1.png

18.IOS和android平台需要分别创建应用还是可以使用同一个?

IOS和android平台需要创建不同的应用,要分开创建,AppId和APPKey也是不同的。

19.收到回调:onCommandResult:command={Registration},resultCode={70000001},reason={the push is not connected.},category={null},commandArguments={null}

该errorCode一般是由于网络问题导致的,请先确认设备网络是否正常,网络是否使用代理。另外,修改系统时间也会导致上述错误。可通过设备浏览器登录如下链接来确认设备网络及设置是否正常:

国内:https://api.xmpush.xiaomi.com/_x/monitor/status

海外:https://api.xmpush.global.xiaomi.com/_x/monitor/status

20.苹果手机的应用在打开状态时收不到消息,在后台和未打开状态时却能收到消息,这种现象正常吗?

正常。苹果手机的应用在前台时,消息是不会展示的,但手机实际是收到消息的,可以在接受消息的回调中打断点,或者打印log进行验证。

五、推送统计数据问题

1.计划推送数是指什么?怎么计算的?

计划推送数是指推送请求所覆盖的所有的设备数,如果目标对象的选取是所有用户,那分母就是历史上所有激活过推送服务的有效设备数;如果是按照标签选取的,那分母是历史上所有订阅过这个标签的有效设备数;如果是按照别名或者regID来选取,那么分母就是所请求的所有合法的别名或regID。

2.设备有效性的判定规则:

如果应用调用了unregisterPush,或者在MIUI上卸载了,或者超过3个月都没有和小米服务器建立过长连接,则会判定设备失效。

3.为什么在数据统计后台看,按天统计中,会出现计划推送少于送达数的现象?

这是正常现象,在按天统计中,计划推送是指当天的所有请求总共覆盖了多少设备数,而送达数则是当天这个app所有的送达,因此这个送达数不但包括当天发的消息送达了多少,也包括了之前发的消息,作为离线消息当天抵达设备的数量。因此这个送达数是存在大于计划推送数的可能性的。

4.如何查询统计数据:

1)使用服务端SDK中的数据API直接拉取统计数据,可方便地与开发者现有的统计系统结合;

2)登录开发者站,进入应用的推送服务查看推送统计数据;

5.从计划推送量到实际下发量再到送达量会有一定比例的损耗,如何降低这个损耗?

一方面,可以调用服务端的feedback接口,拉取无效的设备,以后在推送总量里剔除这部分设备。开发者也可以自行维护有效设备集合,减少发送的设备里存在过多取消注册或无效的设备。

另一方面,可以设置合适的ttl(timeToLive消息过期时间),建议如果消息没有实效性的话可以适度增大ttl,也可不设置该值直接使用我们服务器的默认时间(2周),这样的话只要用户在ttl有效期之内上线,就能收到之前推送的消息。

版权说明

本文内容来自于小米开放平台,本站不拥有所有权,不承担相关法律责任。文章内容系作者个人观点,不代表快出海对观点赞同或支持。如有侵权,请联系管理员(hj@kchuhai.com)删除!

相关文章
小米应用商店:检查更新SDK 集成指南
小米应用商店:检查更新SDK 集成指南
小米应用商店检查更新SDK(下文简写为『检查更新SDK』)帮助您的用户尽快获得最新版本的应用!轻松增加『自动检查更新』功能,通过小米应用商店的CDN服务,快速的把最新版应用推送给用户!
2020-10-09
小米应用商店:推送运营规范
小米应用商店:推送运营规范
为了更好地维护小米推送服务开发者生态体系,保障业务健康发展同时兼顾用户体验,防范和降低开发者推送消息的事故和风险,小米推送特此说明相关推送运营规范,以供开发者参考。
2020-09-30
小米应用商店Unity接入指南
小米应用商店Unity接入指南
本文介绍小米应用商店Unity接入指南。
2020-09-30
华为、小米等应用商店无法下载《原神》和《万国觉醒》
华为、小米等应用商店无法下载《原神》和《万国觉醒》
9月18日、9月21日,米哈游和莉莉丝今年的重磅产品《原神》和《万国觉醒》相继在小米游戏中心和华为游戏中心发布公告,表示将无法在两部游戏正式公测时,在小米和华为应用商店提供下载服务。
2020-09-30
小米应用商店之快应用推送接入指南
小米应用商店之快应用推送接入指南
小米推送支持快应用接入推送服务,本文便为你简单介绍。
2020-09-29
服务商推荐 更多 >
太平洋电信股份有限公司
太平洋电信
太平洋电信为游戏、电商等客户提供低延时、高可靠的多点互联、企业上云、全球移动应用测试、主机托管等服务。通过与澳大利亚电信合作,凭借在全球丰富的海缆网络资源及多年的国际化运营经验,助力企业业务出海布局。 更多产品详情,请访问官方网站:https:www.t-pbs.com
云服务
北京云中融信网络科技有限公司
融云
融云为全球开发者和企业提供 IM即时通讯和实时音视频通信云服务,独立的海外数据中心,全球 30 万+应用的通信选择。一套 SDK 解决所有通信场景,快速集成,1天实现跨国互动,实时沟通,助力应用出海
云服务
凝视数科(北京)科技有限公司
Appstare
Apple Search Ads 代投,美国真人积分墙,FB | GG代投代运营
推广
EBANX
EBANX
EBANX是一家拥有拉丁美洲DNA的全球金融科技公司。 该公司成立于2012年,在跨境电子商务交易流程中提供端到端支付解决方案,为渴望在全世界扩展的全球商家提供100多种拉丁美洲本地支付选项。 EBANX已帮助500多家商家扩展到拉丁美洲,超过4000万拉丁美洲人获得了全球服务和产品。
电商本地化支付
Lotusia
Lotusia 新加坡企业咨询
新加坡注册公司,开设银行账户,公司法定秘书,公司会计年审,税务咨询与合规,法定审计,企业家新加坡身份,公司咨询与新加坡相关商业服务
本地化推广
深圳哈希信息技术有限公司
哈希信息
深圳哈希信息技术有限公司成立于2018年,是国内领先的智能网络服务提供商,基于软件定义网络、下一代网络协议、大数据等技术研发面向不同行业领域的产品和解决方案,秉着“专业、创新、信任、分享“的核心价值观,致力为客户提供一个高效可靠的流量云平台。公司对外提供分发云(CDN)、加速云(动态加速)、安全云(防DDOS&云WAF)、流量云(广告交易)、边缘云、短信云等多个云产品,帮助游戏/资讯等互联网公司构建、加速和更好的保护核心业务。
云服务变现
小程序
公众号
商务合作
投稿采访
出海管家