当然首选你得先集成SDK
随后自定义一个 BroadcastReceiver 类
为了接收推送消息,您需要自定义一个继承自 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
里面:
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
。
多个联系人发来多条消息时,通过 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
。
广播推送-广播消息-推送
中,发起远程推送。
点击推送消息时会触发出如下 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
。
通过以上步骤,您已完成了融云推送服务的集成。