信鸽推送(Android和iOS):详细流程+问题解决

信鸽推送(Android和iOS):详细流程+问题解决

最近初次了解到信鸽推送,详细记录一下整个过程。

一、下载SDK

需要去官网http://xg.qq.com/xg/ctr_index/download下载用户手册,分为服务端和客户端。根据用户手册选择适合当前业务场景的接口,文档中每个接口下有demo可以参考。

pushSingleAccount 推送消息给单个账号(注意分为Android和iOS,所以需要有不同的key和密钥)

public JSONObject pushSingleAccount(int deviceType, String account, Message message) //android使用public JSONObject pushSingleAccount(int deviceType, String account, MessageIOS message, int environment) //IOS 使用

二、注册和生成证书

步骤可参考这篇博文 https://blog.csdn.net/iCandyss/article/details/51199008

获取应用的key和密钥,accessId,secretKey是申请信鸽账号后信鸽为用户生成的。服务端使用SECRET KEY。(操作证书的时候我放弃了,直接给前端要的)

ACCESS ID 2100257622 ACCESS KEY ALG1E3KK187E SECRET KEY 1d36fe96f3b463a5b44f77707d60427f

三、开发环境单元测试

package gov.etax.dzswj.xxzx.impl;

import org.json.JSONObject;

import org.junit.Test;

import com.tencent.xinge.ClickAction;

import com.tencent.xinge.Message;

import com.tencent.xinge.MessageIOS;

import com.tencent.xinge.Style;

import com.tencent.xinge.XingeApp;

/**

* @author hrui

*

*/

public class AppTest{

@Test

public void TestXgIos(){

int EXPIRE_TIME = 3600 * 24 * 3;

String yh = "916204023525847402";

MessageIOS message = new MessageIOS();

message.setAlert("hello hrui!测试iOS啊啊啊");

message.setBadge(1);

message.setExpireTime(EXPIRE_TIME);

XingeApp iosXingeApp = new XingeApp(2200257637L, "78d2a1972ebdb77bcd0f69504d2a326b");

JSONObject iosResult = iosXingeApp.pushSingleAccount(XingeApp.DEVICE_IOS, yh, message, XingeApp.IOSENV_PROD);

int iosRetCode = Integer.valueOf(iosResult.get("ret_code").toString());

System.out.println("iOS按单个账户推送返回结果:"+iosRetCode);

}

@Test

public void TestXgAndroid(){

String yh = "916204023525847402";

Message message = new Message();

Style style = new Style(3, 1, 0, 1, 0);

ClickAction action = new ClickAction();

message.setStyle(style);

message.setAction(action);

message.setType(Message.TYPE_NOTIFICATION);

message.setTitle("title");

message.setExpireTime(3600 * 24 * 3);

message.setContent("hello hrui!Android!!!");

XingeApp androidXingeApp = newXingeApp(2100257621L,"07c66a2fb64893a5db62633a542f8770");

JSONObject androidResult = androidXingeApp.pushSingleAccount(XingeApp.DEVICE_ANDROID, yh, message);

int androidRetCode = Integer.valueOf(androidResult.get("ret_code").toString());

System.out.println("android按单个账户推送返回结果:"+androidRetCode);

}

}

四、结果分析

一、出现问题:iOS信鸽推送,服务端返回0,手机app收不到消息

原因有:

1、可能是iOS推送环境填写错误,根据app是否上线适当选择。

public JSONObject pushSingleAccount(int deviceType, String account, MessageIOS message, int environment)

//iOS设备推送时environment,1:表示推送生产环境;2:表示推送开发环境 environment

2、证书过期

到信鸽后台不需要证书,所以调用服务可以成功,但从信鸽后台下发手机时是需要证书的,如果证书过期了,手机app会收不到消息。但Android不存在证书的概念,没有证书过期的说法。

3、XingeApp.jar版本问题

之前项目原有是1.1版本,后来我下了最新的1.1.8版本的,就可以了。

二、出现问题:推送单一账号时推送成功,但是推送所有设备时,服务端成功,但手机app接收不到信息。

原因:同时进行单元测试时,两个方法的推送内容不要相同,修改后再尝试一下。另外推送不要太频繁。

以上坑都遇到了,调整之后,发送成功。暂时能保证服务端调用信鸽原生接口,可以进行推送消息了。之后还有很多需要优化的事情,比如这个推送消息,点击进去就消失了,我以为点击进去能看到详细内容,后来得知这个app没有功能模块,需要后期开发,会更新的。

相关推荐

老照片-1982世界杯决赛 罗西!又是罗西!
365BET体育投注官网

老照片-1982世界杯决赛 罗西!又是罗西!

📅 09-12 👁️ 1326
攣怎么读
365BET体育投注官网

攣怎么读

📅 07-21 👁️ 9604
林正英在僵尸系列中饰演的九叔全名是什么?
office365ios版本

林正英在僵尸系列中饰演的九叔全名是什么?

📅 08-04 👁️ 7055
面点大厨教你发面十大技巧,学会做出蓬松又柔软的馒头
365BET体育投注官网

面点大厨教你发面十大技巧,学会做出蓬松又柔软的馒头

📅 09-08 👁️ 4871