概述

Android

iOS

REST API

服务端SDK

服务端常见问题

1 消息推送的原理是什么?

Android推送原理: 我们的SDK会和我们的服务器建立长连接,并定时发送心跳,以维持长连接,当用户有消息发送的时候,消息会首先到达我们的服务器,然后我们根据用户的AppKey和token来发送消息。如果用户不在线,我们会把消息缓存,当用户在线的时候,如果消息还在有效期,把消息发送给用户。
IOS推送原理: 用户通过Api把消息发送给我们的服务器,之后我们的服务器根据用户提供的证书和Apple服务器建立连接,把消息和对应的设备token发送给Apple服务器,Apple通过Apns把消息发送给用户。

2 广播、点博、组播的区别?

广播是把消息发送给所有的用户, 点播是发送给特定的一个用户, 组播是把消息发送给特定的一群用户。

3 提示发送的数据不是json

检查是否设置了HTTP的Header,头部需要设置Content-type: application/json

4 签名错误

请检查签名的计算方式,我们提供了几种常见语言的签名计算方式的示例。如果有问题,请联系我们的客服。

5 推送点播消息,返回的result为0,但收不到消息?

result为0代表消息已经到达ixintui的服务器, 但如果设备不在线,不会收到消息。

6 发消息的时候,设备离线,之后在线后能否收到消息?

对于android设备:如果消息还在有效期内, 当设备再次在线的时候,用户将收到该消息。
对于IOS设备: APNS对离线消息只缓存一条,故如果用户离线,再次在线时只能收到最后一条离线消息

7 发送消息后,应用没有立刻收到消息,有延时?

这种情况是因为客户端不在线,等客户端在线的时候,会立刻收到推送消息。可能的原因是,客户端的网络不好,客户端的服务被杀死。

8 对离线用户的消息缓存有上限吗?

Android:广播消息没有上限,只要消息在有效期内,消息就会被缓存。 点播消息每个设备的每个应用缓存16条。
IOS: APNS对离线用户的消息只缓存最后一条,所以IOS的离线消息只有一条。

9 有大量的设备要发送消息,如果加快发送速度?

如果是给所有的用户发送消息,可以使用广播接口。
如果这群用户具有共同的特征,可以对这些用户打tag,之后使用组播接口按tag发送消息。
如果必须通过token来发送大量的设备,可以通过批量token的接口来送,一次可以发送1000条消息。

10 发消息,提示result为700

这种情况为token不存在,或者是token错误,或者该token连续6个月没有连接我们的服务器,我们认定为非法token,不再支持给该用户发送消息。

11 别名是什么?具体怎么使用

别名是指对手机设备起另外一个名字,这样发送点播的时候可以使用token, 也可以给这个token起一个别名, 以后发送消息,可以直接使用这个别名来发送。
如果应用有自己的账号体系,可以在用户登录后把这个设备绑定一个别名, 这样, 发送消息可以直接用应用那边的账号来发送就可以了。
一个别名可以对应多个设备, 但最多不能超过10个。超过10个后,最不活跃的设备的别名将会解除。
按别名发送可以分为两个接口, 一个接口是对该别名的所有用户发送消息,另一个接口是对该别名最后活跃的用户发送消息。
V2版本中,userScope等于3,是给只给别名对应的最后活跃的1个设备发送;userScope等于4,给别名对应的所有设备发送。
V1版本中, 通过alias_send_all来控制, alias_send_all等于0, 是给只给别名对应的最后活跃的1个设备发送;alias_send_all等于1,给别名对应的所有设备发送。

12 收不到消息的检查流程

  1. 设备是否联网,网络是否通畅稳定
  2. 发送消息的AppKey是否和设备上安装的AppKey一致
  3. 应用在设备安装后是否在联网状态下至少打开过一次
  4. 是否推送消息被禁止
  5. 是否发送的透传消息,没法直观的看到消息
  6. 设备上ixintui的后台服务是否被杀死