java服务器端集成友盟,Android友盟推送集成

第一次认真集成推送,碰到了一些问题,记录一下。

首先讲一下实现原理,我们用的是友盟。Android比iOS要麻烦很多。

友盟集成是需要后端配合的,具体就是后端调用友盟的接口,向友盟推送一条消息,然后友盟再向在他们平台注册过的app发送一条消息,我们要做的就是把接收到的消息展示出来。

需求:用户要能在各个时候都能收到我们APP的推送,并且能对应打开不同的界面

解决方法:集成友盟,但是Android只简单集成友盟是不行的,在APP被杀死以后,就接收不到通知了,所以需要额外集成厂商通道。另一个和iOS不一样的就是,iOS在打开当前APP的时候,可以收到横幅推送,但是Android需要自己做。

什么是厂商通道:

由于国内手机厂商过多地使用应用保活方案实现消息推送功能,因此导致手机耗电加快、卡顿。国内部分手机厂商发现了这一问题,自己推出了消息推送服务。这些手机厂商通过进程管理,杀死后台进程,并提供消息推送能力,让消息通过手机厂商官方推送通道下发到应用程序中。这类典型的手机厂商有小米、华为等。

1.集成步骤

大致分为两部分:

正常推送集成。

五大厂商通道集成。

1.1 正常推送集成

点击推送信息以后的处理,收到推送的时候的回调

UmengNotificationClickHandler notificationClickHandler =new UmengNotificationClickHandler() {

@Override

public void dealWithCustomAction(Context context, UMessage msg) {

//点击推送通知以后的处理

Log.i(TAG,"notificationClickHandler "+msg);

}

};

UmengMessageHandler messageHandler =new UmengMessageHandler() {

@Override

public void dealWithCustomMessage(final Context context, final UMessage msg) {

Log.i(TAG,"message "+msg);

}

@Override

public NotificationgetNotification(Context context, UMessage uMessage) {

//手机收到推送的时候的回调

Log.i(TAG,"message ");

//返回默认构造

return super.getNotification(context, uMessage);

}

};

mPushAgent.setNotificationClickHandler(notificationClickHandler);

mPushAgent.setMessageHandler(messageHandler);

设置最多能看到的推送条数

mPushAgent.setDisplayNotificationNumber(3);

如果需求中需要打开APP中某个界面,责需要观察 "after_open"字段,默认是  "go_app",需要服务端同学配合

{

"msg_id": "uu481201399440513912",

"display_type": "notification",

"alias": "",

"random_min": 0,

"body": {

"title": "测试自定义参数",

"ticker": "测试自定义参数",

"text": "无",

"after_open": "go_app",

"url": "",

"activity": "",

"custom": "",

"play_vibrate": "true",

"play_sound": "true",

"play_lights": "true"

},

"extra": {

"key1": "value1",

"key2": "value2"

}

}

成功以后可以看log

主要看after_open,默认是打开app

310c323aa09d

2.集成中碰到的问题

1.集成以后收不到推送

(1) mPushAgent.register()要放在application中调用,放在别的地方不起作用

(2) 检查so文件有没有放错地方

(3) 打开日志提示,仔细看提示:UMConfigure.setLogEnabled(true)

2.java.lang.ClassNotFoundException: com.ut.mini.UTAnalytics

尽量更新到最新版本的引用,友盟开发说这个只是提示,不用太在意....

3.杀死进程以后收不到推送

解决方法:集成各个厂商通道

iOS的小伙伴集成以后,就算杀死APP也可以收到推送,为啥Android不可以,伤感,看了文档才知道,我们要集成厂商通道,

4.集成以后收不到推送,显示送达却没有弹出通知

manifest里面的package最好与build.gradle中的applicationId不一 致,因为我们项目有两个applicationId,所以会出现这种情况

需调用setResourcePackageName设置资源文件包名

310c323aa09d

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在uniapp中集成友盟消息推送,可以按照以下步骤进行操作: 1. 在友盟官网创建应用:首先,在友盟官网上创建一个应用并获取AppKey和AppSecret。确保应用类型选择为“推送”。 2. 安装插件:使用uniapp的插件市场搜索并安装友盟推送插件。你可以在`manifest.json`文件中添加以下代码: ```json "uni-app-plus": { "plugins": { "umeng-push": { "version": "1.0.0", "provider": "xxxxxxxx" // 这里填写你的友盟AppKey } } } ``` 3. 配置Android平台:对于Android平台,你需要在`manifest.json`文件中配置一些必要的信息。添加以下代码: ```json "umeng_push": { "appkey": "xxxxxxxx", // 这里填写你的友盟AppKey "channel": "umeng", // 渠道名称,可以自定义 "xiaomi_appid": "", // 小米推送AppId,可选 "xiaomi_appkey": "" // 小米推送AppKey,可选 } ``` 4. 配置iOS平台:对于iOS平台,你需要在`Info.plist`文件中添加以下代码: ```xml <key>UmengPushAppkey</key> <string>xxxxxxxx</string> <!-- 这里填写你的友盟AppKey --> <key>UMessage_StartWithAppkeyEnabled</key> <false/> ``` 5. 调用推送API:在需要使用推送的页面或组件中,使用uniapp的API进行消息推送。你可以使用`uni.request`方法向友盟推送服务器发送消息,示例如下: ```javascript uni.request({ url: 'https://msg.umeng.com/api/send', method: 'POST', header: { 'Content-Type': 'application/json', 'Authorization': 'Basic ' + base64(appKey + ':' + appMasterSecret) }, data: { "appkey": "xxxxxxxx", // 这里填写你的友盟AppKey "timestamp": Date.now(), "policy": { "expire_time": "2022-01-01 00:00:00" }, "payload": { "body": { "custom": { "key1": "value1", "key2": "value2" } }, "display_type": "message", "body": { "ticker": "通知栏提示文字", "title": "通知标题", "text": "通知内容", "after_open": "go_app" } } }, success: function(res) { console.log(res.data); } }); ``` 请确保替换示例代码中的`xxxxxxxx`为你自己的友盟AppKey。另外,你还需要根据具体需求调整消息内容、推送策略等。 以上是集成友盟消息推送的基本步骤,具体操作还需要根据你的实际需求进行调整。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值