java 信鸽推送demo_iOS中关于信鸽推送的使用demo详解

最近在看推送方面的知识,用的是信鸽推送主要是因为后台用的是信鸽

推送用第三方推送,也就是在客户端建一个广播接收器,当服务器发送消息时发送到信鸽,信鸽再发送一次,广播接受器接受下;

我实现的功能比较简单,当app在运行状态时,会在主页展示一个弹窗展示推送的消息;如果app不在运行状态且service没被销毁就展示默认的通知

那么如何在主页展示弹窗:当广播接受器收到我要的消息时,用观察者模式,收到消息在发送个消息个主界面

1.先按照官网的例子添加好权限及服务有些服务要改成自己的包名;

2.把官网的广播接受器先复制到自己的项目中,再在清单文件中添加;

3.随后添加从官网给出的3个AccessKey了

android:name="XG_V2_ACCESS_ID"

android:value="2100219302" />

android:name="XG_V2_ACCESS_KEY"

android:value="A15KJ71W9ELC" />

4.现在在主界面中注册信鸽推送主要是获取一个token,然后可以上传给服务端,现在服务器就可以给你发送消息了;当然从信鸽官方后台可以发送消息,但是从信鸽后台发送的消息有时会接受不到,这点做的完全不及极光推送好

XGPushConfig.enableDebug(this, true);这句发布的时候记得改为false或删除

//信鸽start

private String token;

private Message message = null;

private void XGInit() {

// TODO Auto-generated method stub

XGPushConfig.enableDebug(this, true);

// 如果需要知道注册是否成功,请使用registerPush(getApplicationContext(),

// XGIOperateCallback)带callback版本

// 如果需要绑定账号,请使用registerPush(getApplicationContext(),account)版本

// 具体可参考详细的开发指南

// 传递的参数为ApplicationContext

//Context context = getApplicationContext();

//1.获取设备的Token

Handler handler = new HandlerExtension(MainActivity.this);

message = handler.obtainMessage();

XGPushManager.registerPush(getApplicationContext(), new XGIOperateCallback() {

@Override

public void onSuccess(Object data, int flag) {

// TODO Auto-generated method stub

Log.d("jiejie", "+++ register push sucess. token:" + data + " " + flag);

token = data + "";

message.obj = "+++ register push sucess. token:" + data;

System.out.println(token);

message.sendToTarget();

}

@Override

public void onFail(Object data, int errCode, String msg) {

// TODO Auto-generated method stub

Log.d("jiejie", "+++ register push fail. token:" + data

+ ", errCode:" + errCode + ",msg:"

+ msg);

message.obj = "+++ register push fail. token:" + data

+ ", errCode:" + errCode + ",msg:" + msg;

message.sendToTarget();

}

});

}

private static class HandlerExtension extends Handler{

WeakReference mActivity;

HandlerExtension(MainActivity activity) {

mActivity = new WeakReference(activity);

}

@Override

public void handleMessage(Message msg) {

// TODO Auto-generated method stub

super.handleMessage(msg);

MainActivity theActivity = mActivity.get();

if(theActivity == null){

theActivity = new MainActivity();

}

if(msg != null){

Log.d(Constants.LogTag, msg.obj.toString());

System.out.println("ddd"+msg.obj.toString());

}

}

}

5.修改广播接受器中的onTextMessage方法,当消息发送来时,将消息发送到主界面,不展示通知

不过你先要知道你app是否正在运行状态

/**

* 判断是否运行在前台

*

* @param context

* @return

*/

public static boolean isRunningForeground(Context context) {

String packageName = getPackageName(context);

String topActivityClassName = getTopActivityName(context);

Log.d("TAG", "packageName=" + packageName + ",topActivityClassName=" + topActivityClassName);

if (packageName != null && topActivityClassName != null && topActivityClassName.startsWith(packageName)) {

Log.d("TAG", "---> isRunningForeGround");

return true;

} else {

Log.d("TAG", "---> isRunningBackGround");

return false;

}

}

// 方法2、通过RunningAppProcessInfo类判断(不需要额外权限):

public static boolean isBackground(Context context) {

ActivityManager activityManager = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);

List appProcesses = activityManager.getRunningAppProcesses();

for (RunningAppProcessInfo appProcess : appProcesses) {

if (appProcess.processName.equals(context.getPackageName())) {

if (appProcess.importance == RunningAppProcessInfo.IMPORTANCE_BACKGROUND) {

Log.i("后台", appProcess.processName);

return true;

} else {

Log.i("前台", appProcess.processName);

return false;

}

}

}

return false;

}

6.通知EventBus来实现观察者模式在广播接收器中发送消息

// 消息透传

@Override

public void onTextMessage(Context context, XGPushTextMessage message) {

String text = "收到消息:" + message.toString();

EventBus.getDefault().post(text);

System.out.println(text);

// 获取自定义key-value

PushTextMessage pushTextMessage = new PushTextMessage();

String title = message.getTitle();

String content = message.getContent();

pushTextMessage.setTitle(title);

pushTextMessage.setContent(content);

String customContent = message.getCustomContent();

if (customContent != null && customContent.length() != 0) {

try {

// JSONObject obj = new JSONObject(customContent);

// // key1为前台配置的key

// if (!obj.isNull("key")) {

// String value = obj.getString("key");

// LogUtils.log(LogTag, "get custom value:" + value);

// }

CustomContent custom = com.alibaba.fastjson.JSONObject.parseObject(customContent, CustomContent.class);

if (custom != null) {

pushTextMessage.setCustomContent(custom);

}

// ...

} catch (Exception e) {

System.out.println(e + "d");

e.printStackTrace();

}

}

show(context, text);

Log.d("jiejie", "pushTextMessage:" + pushTextMessage);

// EventBus.getDefault().post(pushTextMessage);

try {

// APP自主处理消息的过程...

boolean isForeground = AppUtil.isRunningForeground(context);

Log.d("jiejie", isForeground + "d");

if (isForeground) {

EventBus.getDefault().post(pushTextMessage);

} else {

notify(context, title, content);

}

} catch (Exception e) {

System.out.println(e + "ddd");

e.printStackTrace();

}

7.在主界面中接受EventBus发送的消息,展示一个弹窗

@Subscribe

public void onMessageReviced(final PushTextMessage pushTextMessage){

Log.d("jiejie", "好" + " 标题" +pushTextMessage.getTitle() + " 内容:" +pushTextMessage.getContent() + "CustomContent" + pushTextMessage.getCustomContent().getCmd());

if(pushTextMessage != null){

showAlertDialog(this, pushTextMessage);

}

}

private void showAlertDialog(Context context,PushTextMessage text){

AlertDialog.Builder dialog = new AlertDialog.Builder(context);

dialog.setTitle("推送的标题");

dialog.setMessage(text.getContent());

dialog.setPositiveButton("确认", new DialogInterface.OnClickListener() {

@Override

public void onClick(DialogInterface arg0, int arg1) {

// TODO Auto-generated method stub

}

});

AlertDialog mDialog = dialog.create();

mDialog.show();

}

@Override

protected void onDestroy() {

// TODO Auto-generated method stub

super.onDestroy();

EventBus.getDefault().unregister(this);

}

以上所述是小编给大家介绍的iOS中关于信鸽推送的使用demo详解,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
包含客户端和服务端 代码 亿级并发,秒级触达 稳定的大规模接入集群,同时与数亿移动智能终端保持稳定的长连接,支持十亿级并发 秒级触达用户,每天可发送百亿级的通知/消息 最省电省流量方案 智能识别网络环境,根据不同环境定制通讯协议,以最低消耗维护长连接,做到极致省电省流量 通知及消息高度压缩,节省流量的同时加密保证安全性 丰富标签,精准定向 特定标签人群,团队测试用户,全量用户,单个用户等多种推送范围选择 及时稳定地将信息送达到最相关的用户,形成用户粘性,避免骚扰 开放API接口,灵活自定义推送 开放推送能力,提供多种语言API ,包括Java/PHP/Python/Node.js,业务自由集成 可视效果,实时监控 实时监控通知/消息的抵达用户量,点击转化量,点击转化率,推送效果一目了然 使用方法 登录后,创建应用,获取应用的唯一识别码AccessKey和密钥SecretKey; 下载对应平台的SDK,并参考开发文档完成SDK集成; 通过API调用或Web业务端方便快速地完成推送测试和实际发送,并实时查看推送效果。 使用场景 通知,定义为Android和iOS开发者指南的Notifidoveion。服务器定向将信息实时送达手机,通过建立一条手机与服务器的连接链路,当有消息需要发送到手机时,通过此链路发送即可。通过推送一条用户可见的信息,引导用户进行有目的性的操作。通常用于产品信息知会、新闻推送和个性化消息等场景。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值