接入指引部分:
1、 简介
本插件封装了个推消息推送平台的 SDK,使用此模块可轻松实现服务端向客户端推送通知和透传消息的功能。2.0.0版本更新了部分方法,请此版本之前的插件重新集成。
插件作者:来自个推官方
1.1 说明
仅需在线打包编译
1.2 使用插件需要的相关配置
自定义插件(建议在线使用
)下载:跳转到插件中心,可参考详细操作文档:点击跳转
Android
下载插件包解压修改其中的 AndroidManifest.xml 文件:
- 替换第 12 行到 23 行中 "你的APPID"、"你的APPKEY"、"你的APPSECRET" 为申请到的对应值。
<meta-data
android:name="PUSH_APPID"
android:value="你的APPID" />
<meta-data
android:name="PUSH_APPKEY"
android:value="你的APPKEY" />
<meta-data
android:name="PUSH_APPSECRET"
android:value="你的APPSECRET" />
<meta-data
android:name="PUSH_GROUPID"
android:value="" />
- 适配 Android 5.0 以上需要修改自定义权限名称,替换第 4 行到 8 行 name 值中 "第三方包名" 为自己的包名。
因 Android 5.0 系统自身限制,多个应用安装时,如果拥有同一个 Service 权限,会导致权限冲突,只能安装一个带有此权限的应用,其他应用都不能再安装上去。
目前有许多客户在 Android 5.0 系统上接入个推 SDK 时,会发现如果其他集成个推 SDK 的应用已经安装在手机,此应用就不能再安装上去,会出现权限冲突。报错信息如下:
[INSTALL_FAILED_DUPLICATE_PERMISSIONperm=getui.permission.GetuiServicepkg=com.XXX.XXXXX]
官方说明:
Starting in Android 5.0, the system enforces a new uniqueness restriction on custom permissions for apps that are signed with different keys. Now only one app on a device can define a given custom permission (as determined by its name), unless the other app defining the permission is signed with the same key. If the user tries to install an app with a duplicate custom permission and is not signed with the same key as the resident app that defines the permission, the system blocks the installation.
<uses-permission android:name="getui.permission.GetuiService.第三方包名" />
<permission
android:name="getui.permission.GetuiService.第三方包名"
android:protectionLevel="normal" >
</permission>
修改完成后重新在线打包,上传为自定义的插件供打包使用。
2、API概览
2.1 方法
changePushStatus //开始或暂停推送服务
描述
开始或暂停推送服务
参数
- status: (Int 类型) 必选 0 代表开始推送,1 代表暂停推送。
平台支持
版本支持
示例代码
uexGetui.changePushStatus(0);
destroy //停止并销毁推送服务
描述
停止并销毁推送服务
参数
平台支持
版本支持
示例代码
uexGetui.destroy();
2.2 调用方法
version //获取SDK版本号
描述
获取 SDK 版本号,回调 onGetVersion。
参数
平台支持
版本支持
示例代码
uexGetui.version();
uexGetui.onGetVersion = function(opId, dataType, data){
// Handle data
}
initialize //初始化推送服务
描述
初始化推送服务,回调 onInitializePusher。
参数
无
- appId: 申请到的 appId
- appKey: 申请到的 appKey
- appSecret: 申请到的 appSecret
平台支持
版本支持
示例代码
uexGetui.initialize();
uexGetui.onInitializePusher = function(opId, dataType, data){
// Handle data
}
var params = {
appId:'h5AH1rK4KW7vfFGZjT7fG',
appKey:'aiMe49ehZa7IK8sevOTiY8',
appSecret:'wx7779c7c063a9d4d9'
};
var data = JSON.stringify(params);
uexGetui.initialize(data);
uexGetui.onInitializePusher = function(opId, dataType, data){
// Handle data
}
clientId //获取当前用户的clientId
描述
获取当前用户的 clientId,回调 onGetClientId。
参数
平台支持
版本支持
示例代码
uexGetui.clientId();
uexGetui.onGetClientId = function(opId, dataType, data){
// Handle data
}
描述
为用户设置标签,回调 onSetTags。
参数
- tags: (String 类型) 必选 标签字符串(以逗号,分割)
- sn:用户自定义的序列号,用来唯一标识该动作, 自定义 receiver 中会回执该结果
平台支持
版本支持
示例代码
var params = "tag1,tag2";
var sn="getui";
uexGetui.setTags(params,sn);
uexGetui.onSetTags = function(opId, dataType, data){
// Handle data
}
bindAlias //绑定用户别名
描述
绑定用户别名,回调 onBindAlias。
参数
- alias: (String 类型) 必选 别名字符串
平台支持
版本支持
示例代码
var alias = "name";
var isSelf="true";
uexGetui.bindAlias(alias,isSelf);
uexGetui.onBindAlias = function(opId, dataType, data){
// Handle data
}
unbindAlias //解绑用户别名
描述
解绑用户别名,回调 onUnbindAlias。
参数
版本支持
示例代码
var alias = "name";
var isSelf="true";
uexGetui.unbindAlias(alias,isSelft);
uexGetui.onUnbindAlias = function(opId, dataType, data){
// Handle data
}
getPushStatus //获取推送服务的服务状态
描述
获取推送服务的服务状态,回调 onGetPushStatus。
参数
平台支持
版本支持
示例代码
uexGetui.getPushStatus();
uexGetui.onGetPushStatus = function(opId, dataType, data){
// Handle data
}
sendMessage //发送上行消息到应用服务器
描述
发送上行消息到应用服务器,回调 onSendMessage。
参数
- taskId: (String 类型) 必选 task id
- data: (String 类型) 必选 需要发送的字符串内容
平台支持
版本支持
示例代码
var params = {
taskId:'TASK_ID',
data:'any string'
};
var data = JSON.stringify(params);
uexGetui.sendMessage(data);
uexGetui.onSendMessage = function(opId, dataType, data){
// Handle data
}
sendFeedbackMessage //上行第三方自定义回执
描述
上行第三方自定义回执,回调 onSendFeedbackMessage。
参数
- taskId: (String 类型) 必选 task id
- messageId: (String 类型) 必选 message id
- actionId: (String 类型) 必选 action id
平台支持
版本支持
示例代码
var params = {
taskId:'TASK_ID',
messageId:'MESSAGE_ID',
actionId:90001
};
var data = JSON.stringify(params);
uexGetui.sendFeedbackMessage(data);
uexGetui.onSendFeedbackMessage = function(opId, dataType, data){
// Handle data
}
setSilentTime //设置静默时间
描述
设置静默时间,回调 onSetSilentTime。
参数
- beginHour: (Int 类型) 必选 开始时间 0-23
- duration: (Int 类型) 必选 持续时间 0-23
平台支持
版本支持
示例代码
var params = {
beginHour:10,
duration:6
};
var data = JSON.stringify(params);
uexGetui.setSilentTime(data);
uexGetui.onSetSilentTime = function(opId, dataType, data){
// Handle data
}
registerDeviceToken //注册设备token
描述
注册设备 token,回调 onRegisterDeviceToken。
参数
平台支持
版本支持
示例代码
uexGetui.registerDeviceToken();
uexGetui.onRegisterDeviceToken = function(opId, dataType, data){
// Handle data
}
registerVoipToken //注册VOIPtoken
描述
注册VOIP token,回调 onRegisterVoipToken。
参数
平台支持
版本支持
示例代码
uexGetui. registerVoipToken();
uexGetui. onRegisterVoipToken = function(opId, dataType, data){
// Handle data
}
2.3回调方法
onGetVersion //取得SDK 版本号监听方法
参数
- opId:(Int 类型) 操作ID
- dataType:(Int 类型) 数据类型 详见CONSTANT中Callback方法数据类型
- data:(String 类型) 版本字符串
平台支持
版本支持
示例代码
uexGetui.onGetVersion = function(opId, dataType, data){
alert(data);
}
onInitializePusher //初始化推送服务监听方法
参数
- opId:(Int 类型) 操作ID
- dataType:(Int 类型) 数据类型 详见CONSTANT中Callback方法数据类型
- data:(String 类型) JSON 字符串
- result 初始化结果:成功 0,失败 1。
- clientId 注册的 ClientId
- error 错误消息(初始化成功错误消息为空)
平台支持
版本支持
示例代码
uexGetui.onInitializePusher = function(opId, dataType, data){
var object = JSON.parse(data);
var result = object.result;
var clientId = object.clientId;
var error = object.error;
}
参数
- opId:(Int 类型) 操作ID
- dataType:(Int 类型) 数据类型 详见CONSTANT中Callback方法数据类型
- data:(Int 类型) 设置用户标签结果
成功返回 0,失败返回 1。
平台支持
版本支持
示例代码
uexGetui.onSetTags = function(opId, dataType, data){
alert(data);
}
onGetPushStatus //获取推送服务的服务状态监听方法
参数
- opId:(Int 类型) 操作ID
- dataType:(Int 类型) 数据类型 详见CONSTANT中Callback方法数据类型
- data:(Int 类型) 推送服务状态
运行返回 0,停止返回 1。
平台支持
版本支持
示例代码
uexGetui.onGetPushStatus = function(opId, dataType, data){
alert(data);
}
onGetClientId //获取当前用户的clientId监听方法
参数
- opId:(Int 类型) 操作ID
- dataType:(Int 类型) 数据类型 详见CONSTANT中Callback方法数据类型
- data:(String 类型) ClientId 字符串
平台支持
版本支持
示例代码
uexGetui.onGetClientId = function(opId, dataType, data){
alert(data);
}
onBindAlias //绑定用户别名监听方法
参数
- opId:(Int 类型) 操作ID
- dataType:(Int 类型) 数据类型 详见CONSTANT中Callback方法数据类型
- data:(Int 类型) 绑定别名结果
成功返回 0,失败返回 1。
平台支持
版本支持
onUnbindAlias //解绑用户别名监听方法
参数
- opId:(Int 类型) 操作ID
- dataType:(Int 类型) 数据类型 详见CONSTANT中Callback方法数据类型
- data:(Int 类型) 解绑别名结果
成功返回 0,失败返回 1。
平台支持
版本支持
示例代码
uexGetui.onUnbindAlias = function(opId, dataType, data){
alert(data);
}
onSendMessage //发送上行消息监听方法
参数
- opId:(Int 类型) 操作ID
- dataType:(Int 类型) 数据类型 详见CONSTANT中Callback方法数据类型
- data:(Int 类型) 发送上行消息结果
成功返回 0,失败返回 1。
平台支持
版本支持
示例代码
uexGetui.onSendMessage = function(opId, dataType, data){
alert(data);
}
onReceiveMessage //接收到消息监听方法
参数
- opId:(Int 类型) 操作ID
- dataType:(Int 类型) 数据类型 详见CONSTANT中Callback方法数据类型
- data:(String 类型) JSON 消息字符串
- result 注册结果:成功 0,失败 1。
- appId 应用 Id
- data 消息内容
平台支持
版本支持
示例代码
uexGetui.onReceiveMessage = function(opId, dataType, data){
var object = JSON.parse(data);
var result = object.result;
var appId = object.appId;
var message = object.data;
}
onRegisterDeviceToken //注册设备token监听方法
参数
- opId:(Int 类型) 操作ID
- dataType:(Int 类型) 数据类型 详见CONSTANT中Callback方法数据类型
- data:(String 类型) JSON 消息字符串
- result 注册结果:成功 0,失败 1。
- token 获得的 token 字符串
- error 错误消息(成功时错误消息为空)
平台支持
版本支持
示例代码
uexGetui.onRegisterDeviceToken = function(opId, dataType, data){
var object = JSON.parse(data);
var result = object.result;
var token = object.token;
var error = object.error;
}
onRegisterVoipToken //注册VOIPtoken监听方法
参数
- opId:(Int 类型) 操作ID
- dataType:(Int 类型) 数据类型 详见CONSTANT中Callback方法数据类型
- data:(String 类型) JSON 消息字符串
- result 注册结果:成功 0,失败 1。
- token 获得的VOIP token 字符串
- error 错误消息(成功时错误消息为空)
平台支持
版本支持
示例代码
uexGetui. onRegisterVoipToken = function(opId, dataType, data){
var object = JSON.parse(data);
var result = object.result;
var token = object.token;
var error = object.error;
}
onErrorOccur //错误发生监听方法
参数
- opId:(Int 类型) 操作ID
- dataType:(Int 类型) 数据类型 详见CONSTANT中Callback方法数据类型
- data:(String 类型) 错误消息字符串
平台支持
版本支持
示例代码
uexGetui.onErrorOccur = function(opId, dataType, data){
alert(data);
}
onSetSilentTime //设置静默时间监听方法
参数
- opId:(Int 类型) 操作ID
- dataType:(Int 类型) 数据类型 详见CONSTANT中Callback方法数据类型
- data:(Int 类型) 设置静默结果
成功返回 0,失败返回 1。
平台支持
版本支持
示例代码
uexGetui.onSetSilentTime = function(opId, dataType, data){
alert(data);
}
onSendFeedbackMessage //上行第三方自定义回执监听方法
参数
- opId:(Int 类型) 操作ID
- dataType:(Int 类型) 数据类型 详见CONSTANT中Callback方法数据类型
- data:(Int 类型) 上行第三方自定义回执结果
成功返回 0,失败返回 1。
平台支持
版本支持
示例代码
uexGetui.onSendFeedbackMessage = function(opId, dataType, data){
alert(data);
}
onNotificationMessageArrived //通知到达方法回调**
参数
平台支持
版本支持
示例代码
uexGetui.onNotificationArrived = function(opId, dataType, data){
alert("onNotificationArrived:" + data);
}
onNotificationMessageClicked //通知点击方法回调**
参数
平台支持
版本支持
示例代码
uexGetui.onNotificationClicked = function(opId, dataType, data){
alert("onNotificationClicked:" + data);
}
3、更新历史
iOS 更新功能:
API 版本:uexGetui-2.3.0.0(iOS)
历史发布版本 |
iOS更新 |
2.3.0.0 |
新增 AppLink 服务及统计支持。新增短信补量推送服务。新增 VOIP 推送及统计支持。优化域名探测逻辑,修复异常。修复 iOS10 上点击统计异常。 |
1.6.2.0 |
添加 HTTPDNS 域名解析,防止域名劫持。优化SDK网络请求,降低流量消耗。*添加 UserNotifications.framework 使用,以 Optional 弱引用方式引用 |
1.0.0 |
个推 SDK |
Android更新功能:
API 版本: uexGetui-2.10.3.5(Android)
历史发布版本 |
安卓更新 |
2.10.3.5 |
调整代码符合google审核机制针对海外用户进行联网优化 bug修复 |
2.10.2.0 |
消息和透传的接收方式由广播改为 IntentService,避免小概率的广播丢失。采用自定义的服务名,避免被进程清理。 修复了在一些机型上通知不能展示的问题。 |
1.0.0 |
个推 SDK |
个推开发者平台创建应用
5、 注册成功后登陆并登记应用
Android 应用标识填写自定义的包名。
iOS 应用证书选择导出的 p12 格式推送证书,密码为导出时创建的密码。
6、 打包个推插件
6.1 自定义插件包(只针对安卓)
下载个推插件包 Android 版本,解压、修改 AndroidManifest.xml。
将登记的应用配置信息 AppID、AppSecret、AppKey 分别对应替换 AndroidManifest.xml 中的 appId、appSecret、appKey。
替换 packageName 为自己定义的 Package Name。
修改完成后压缩打包,作为自定义插件上传到打包服务器。
7、在线打包
7.1 ×选择上传到打包服务器的自定义插件
7.2 ×选择证书填写自定义包名进行打包(安卓)
7.3 × ios应用需要上传申请的苹果证书,打包选择对应的证书
如下图
最后, 跳转到个推开发者平台,创建推送