客户端 #
- 各平台客户端SDK详细API参照
- 支持所有平台,未默认提供SDK的平台,可联系客服获取,只针对付费用户
- 客户端支持TCP,UDP,WEBSOCKET传输协议
接口调用 #
参照接口调用时序图
1.configUPush #
配置UPush
2.registerUPush #
- 调用registerUPush,注册到服务器。如果是单机版(只有一个connector服务),或者使用注册时序2时,可替换为registerSpecifiedUPushServer,地址参数传入connector地址信息。
- 注册完成会回调onPushToken,获得pushToken。
- 手机端需要在启动时就注册,其他平台如需要扫码登录建议启动时就注册,把pushToken放到生成的二维码中,手机端扫码成功,后台服务器根据pushToken把登录信息推送给客户端。
3.bindUser #
- 建议使用bindUser,服务端根据用户ID推送消息,无需再关注pushToken,应用服务器也可以不存储pushToken。
- bindUser在程序启动时的处理,手机端应用如果再次启动会保持上次登录状态的,即无需再次输入账号登录的,可在启动时检验完登录状态直接调用- bindUser,无需等待注册完成回调onPushToken。 当然这不局限于手机端,如果其他平台也有退出还保持登录状态的设定时,bindUser使用也是一样的。
- 调用bindUser,会改变pushToken的值,即再次触发onPushToken回调,并在回调中返回已绑定的用户ID。
- 已经调用bindUser绑定用户ID的,不能再绑定其他用户ID,如果再次绑定的是同一个用户ID不会报错, 注销后可绑定其他用户ID。
- 事件监听回调onPushToken,onBindUser在断线重连后也会被触发。
4.注销场景 #
- 用户从应用退出登录时
- 切换用户时,先注销,另一个用户登录成功后再注册
- 单点登录被顶掉时会自动注销
- 除手机外(退出依然保持登录状态的手机APP),其他平台的应用建议推出程序前注销
通知栏点击 #
- 区别于其他推送服务以及厂商推送服务的固定几种点击通知栏触发动作(打开启动页,打开Activity, 打开网页),UPush实现了通知栏点击动作自定义,服务端构建推送消息并赋值通知栏action属性,用户点击手机通知栏(包括厂商通知),会触发onNotificationClicked回调,开发者根据回调参数,消息通知对象中的action属性的值,做出约定的动作。如果服务端不赋值action,点击通知默认打开程序。
例如: 1. action值为chat://xiaoming,客户端开发者判断action以chat://开头后面接用户ID,直接跳转到和此用户的聊天页面。
2. action值为https://upush.cmcim.com,客户端开发者判断action以http开头,直接打开链接。 - 以上说明适用于android,ios,uniapp的SDK。 其他平台如PC和Web端,它们没有厂商推送的干扰和手机系统的强约束,实现起来比较简单。有时为了跨平台统一性,或者业务需要,可能会用到非手机平台的通知点击。这里说一下实现逻辑,客户端收到消息推送(onPush),判断msg.notification是否为空,不为空表示此条消息需要显示通知栏,构建通知栏时把action做为点击回调参数或者把整个msg作为回调参数,这样点击通知栏时根据回调action的值做出相应的动作,是不是很简单。
通知栏拦截 #
- 手机本地通知栏显示拦截onLocalNotificationWillAppear,开发者可以通过此方法修改通知的显示内容,也可以通过返回值控制是否显示此条消息的通知。
- 远程通知,IOS通过NotificationService拦截远程通知进行修改内容,可参考IOS Demo。
UPush所有厂商推送实现开源,服务端构建推送消息通知属性时把个性化内容添加到vendorExtra,修改厂商推送源码利用vendorExtra来构建不同厂商的个性化内容。 - 其他平台不涉及通知拦截问题,通知本身是通过开发者自行构建的。