问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

怎么使用融云IM的推送功能,融云推送API

发布网友 发布时间:2022-05-06 13:23

我来回答

1个回答

热心网友 时间:2022-06-30 17:50

为了接收推送消息,您需要自定义一个继承自 PushMessageReceiver 类的 BroadcastReceiver (必须实现,否则会收不到推送消息),实现其中的 onNotificationMessageArrived,onNotificationMessageClicked 然后把该 receiver 注册到 AndroidManifest.xml 文件中。
自定义的 BroadcastReceiver:
public class DemoNotificationReceiver extends PushMessageReceiver {
@Override
public boolean onNotificationMessageArrived(Context context, PushNotificationMessage message) {
return false;
}

@Override
public boolean onNotificationMessageClicked(Context context, PushNotificationMessage message) {
return false;
}
}

注册到应用的 AndroidManifest.xml 里面:
<receiver
android:exported="true"
android:name="您自定义的 broadcastReceiver 类名">
<intent-filter>
<action android:name="io.rong.push.intent.MESSAGE_ARRIVED" />
<action android:name="io.rong.push.intent.MI_MESSAGE_ARRIVED" />
<action android:name="io.rong.push.intent.MESSAGE_CLICKED" />
<action android:name="io.rong.push.intent.MI_MESSAGE_CLICKED" />
</intent-filter>
</receiver>

onNotificationMessageArrived 用来接收服务器发来的通知栏消息(消息到达客户端时触发),默认return false,通知消息会以融云 SDK 的默认形式展现。如果需要自定义通知栏的展示,在这里实现自己的通知栏展现代码,同时 return true 即可。
onNotificationMessageClicked 是在用户点击通知栏消息时触发 (注意:如果自定义了通知栏的展现,则不会触发),默认 return false 。如果需要自定义点击通知时的跳转,return true 即可。融云 SDK 默认跳转规则如下
只有一个联系人发来一条或者多条消息时,会通过 intent 隐式启动会话 activity,intent 的 uri 如下:
Intent intent = new Intent();
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
Uri.Builder builder = Uri.parse("rong://" + this.getPackageName()).buildUpon();

builder.appendPath("conversation").appendPath(type.getName())
.appendQueryParameter("targetId", targetId)
.appendQueryParameter("title", targetName);
uri = builder.build();
intent.setData(uri);
startActivity(intent);

如果你的 AndroidManifest.xml 里面配置 A activity 拦截了这个 intent ,那在点击这条通知栏消息 时就会启动 activity A 。
<activity
android:name="A"
android:launchMode="singleTop"
android:screenOrientation="portrait"
android:windowSoftInputMode="stateHidden|adjustResize">
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />

<data
android:host="你的包名"
android:pathPrefix="/conversation/"
android:scheme="rong" />
</intent-filter>
</activity>

多个联系人发来多条消息时,通过 intent 隐式启动会话列表 activity,intent 的 uri 配置如下:
Intent intent = new Intent();
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
Uri.Builder builder = Uri.parse("rong://" + this.getPackageName()).buildUpon();
builder.appendPath("conversationlist");
Uri uri = builder.build();
intent.setData(uri);
startActivity(intent);

如果你的 AndroidManifest.xml 里面配置 B activity 拦截了这个 intent,那在点击这条通知栏消息 时就会启动 activity B。
<activity
android:name="B"
android:launchMode="singleTask"
android:screenOrientation="portrait"
android:windowSoftInputMode="stateHidden|adjustResize">

<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<data
android:host="你的包名"
android:path="/conversationlist"
android:scheme="rong" />
</intent-filter>
</activity>

可以在融云开发者后台广播推送-广播消息-推送中,发起远程推送。
点击推送消息时会触发出如下 action 事件:
Intent intent = new Intent();
intent.setFlags(intent.FLAG_ACTIVITY_NEW_TASK);

Uri.Builder uriBuilder = Uri.parse("rong://" + this.getPackageName()).buildUpon();
uriBuilder.appendPath("push_message")
.appendQueryParameter("targetId", targetId)
.appendQueryParameter("pushData", pushData)
.appendQueryParameter("pushId", pushId)
.appendQueryParameter("extra", extra);

startActivity(intent);

如果你的 AndroidManifest.xml 里面配置了 C activity 拦截这个 action, 那么点击时就会跳转到 activity C。
<activity
android:name="C"
android:launchMode="singleTask"
android:screenOrientation="portrait">

<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />

<data
android:host="你的包名"
android:pathPrefix="/push_message"
android:scheme="rong" />
</intent-filter>
</activity>

通过以上步骤,您已完成了融云推送服务的集成。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
大学中大德指什么 驾考各科通过率是多少 驾考全部一次过的比例 驾考宝典科目一通过率多少 驾考宝典通过率怎么算的 .js 文件和 .mjs 文件的区别 .js是什么文 苹果13在哪切换4G网络 苹果13怎么把5g换成4g?苹果13设置4g网络方法介绍 iphone13如何更改网络信号 iphone13手机5G设置成4G教程 晚上跑完步吃了玉米、菠菜、鸡蛋、黄瓜、西红柿、洋葱会发胖吗? 我晚上吃了一个黄瓜,一个苹果,一点清水菠菜,会胖吗? 世界上最贵的股票市值人民币多少钱一股?是哪一个国家的? 一股抵一辆豪车 全球最贵股票价格多少 雨的效果 word嵌入式图片为什么还不是字符格式 word底纹选项卡的图案样式里的百分数有什么用?选颜色后为什么会有很多小点 抖音关注的好友发的作品怎么前面都看到后面几天了没看到 0pp手机忘记密码怎么解锁 word插入bmp图片后,文挡打印时会显示针点状背景 页面背景点线怎么设置 手机和电脑如何进行信息互传?比如手机信息传给电脑 电脑传给手机 什么软件最绿色最好? 煅云衣的介绍 一台XP电脑怎么和WIN7共享,用WIN7电脑能找到XP但连不上。XP上找不到WIN7 帮我想一个带“衣”字的网名 (式乾路,辟天扉。回曰驭,动云衣。登金阙,入紫微。)的意思? XP和WIN7系统是否可以同时运行在一台计算机上面而且可以一键切换? 求生意对联,店名:云衣衣,请高手们帮忙想一副对联,其中含有这三个字,谢谢! 苏州市云衣轩泽贸易有限公司怎么样? 极光世界20多级的九云衣怎么获得 晚上吃菠菜会发胖吗 晚上吃菠菜会胖吗? 吃菠菜会胖吗 温州考生,中考300多分可以读什么学校? 现在有什么好看的小说app吗,苹果手机免费那种,不要广告的? rhinos是什么意思啊? 犀牛英语怎么说? Rhino是个什么样的软件? 电影《特种部队-眼镜蛇》里提到的RHINO是神马?? 犀牛rhino的复数为什么是加s,不是es,犀牛不是有生命吗 rhinoceros是什么意思 犀牛rhino的复数为什么是加s,不是es,犀牛 安装犀牛Rhino5.0最后一步安装Rhino5.0 SR3 升级程序是什么意思 Pro&#47;E; Rhino; 3DMAXS; CATIA; UG 这几种软件都是作图的么?和CAD有什么区别? rhino的复数为什么是加s,不是es,犀牛不是有生命吗 Rhino犀牛,这个软件要钱才能用吗? 求雪莱if winter comes,can spring be far away原诗 翻译一段英语短文 qq同学群名片用 希腊神话的人物好 还是皇上太子公主之类的 “冬天来了,春天还会远吗?”是谁的名言