|
极光推送调试方法总结
1.极光推送官网发送消息
官网发送消息可以分为按所有人,设备标签,设备别名,注册id(Registration ID)
按所有人:如果极光推送的相关配置没有问题的话,下载安装app后,即可收到官网的推送消息
设备标签:这里要配合js代码,将标签写入到本机存储中localStorage,然后在官网按照写好的标签发送通知
设备别名:与设备标签类似
注册id:基本上是识别手机的唯一id,通过外卖的案例可以获得这个id的方法
2.真机调试
打调试包,不要勾选发布模式,极光推送的插件配置要正确,生成app,手机安装,并在手机上运行
这样手机上跑的代码都是开发环境的代码,可以随时更改(js和java),随时改,随时看效果
3.打发布包,看最终效果
这个就是最终发布模式了,看最终的实际运行效果
代码示例:
比如说打开app的时候需要登录,在登录成功后,将标签写入localStorage
后台推送消息时,按照标签推送消息
代码示例:在jpush.js中添加方法
注册推送别名和标签:
JPushInstance.prototype.initTagsWithAlias = function(usercode) {
if (window.plugins && window.plugins.jPushPlugin) {
var tag1 = "kaifa";
var tag2 = "ceshi";
var alias = usercode;
var tags = [];
if (tag1 != "") {
tags.push(tag1);
}
if (tag2 != "") {
tags.push(tag2);
}
alert(alias);
window.plugins.jPushPlugin.setTagsWithAlias(tags, alias);
//window.plugins.jPushPlugin.setAlias(alias);
}
};
登录成功后调用注册:
jpushInstance.initTagsWithAlias(phoneInput);
发起推送:
justep.Baas.sendRequest({
"url" : "/jpush/jpush", // servlet请求地址
"action" : "pushAlias", // action
"anync": true,
//只测试别名
"params" : {"registrationId" : id,"alias":"admin"}, // action对应的参数
"success" : function(data){
alert(111);
} // 请求成功后的回调方法
});
java代码:
/**
* 给别名组发通知
*
* @param alias
* @param key
* @param secret
* @return
* @throws APIConnectionException
* @throws APIRequestException
*/
public static ScheduleResult sendPushMessageAlias(String alias, String key,
String secret) throws APIConnectionException, APIRequestException {
ClientConfig config = ClientConfig.getInstance();
Set<String> tags = new HashSet<String>();
if (alias != null && alias.length() > 0) {
String[] arrys = alias.split(";");
for (String str : arrys) {
tags.add(str);
}
}
jpushClient = new JPushClient(secret, key, 3, null, config);
PushPayload pushload = PushPayload
.newBuilder()
.setPlatform(Platform.all())
// 向指定的组推送
.setAudience(Audience.alias(tags))
.setNotification(Notification.alert("您收到一条农采通知,请查收:-)"))
.build();
pushload.resetOptionsTimeToLive(86400);
pushload.resetOptionsApnsProduction(apnsProduction);
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Calendar nowTime = Calendar.getInstance();
nowTime.add(Calendar.MINUTE, 1);
String scheduleTime = sdf.format(nowTime.getTime());
ScheduleResult result = jpushClient.createSingleSchedule(UUID
.randomUUID().toString().replaceAll("-", ""), scheduleTime,
pushload);
return result;
}
|
|