腾讯云即时通信IMAndroid_AI解决方案_同尘科技
步骤1:下载并添加配置文件
完成控制台厂商推送信息填写后,下载并添加配置文件到工程。将下载的 timpush-configs.json 文件添加到应用模块的 assets 目录下:
1.选择下载配置文件 timpush-configs.json | 2.添加到工程 |
![]() |
![]() |
步骤2:集成 TIMPush 插件
// 推送主包必须要集成implementation 'com.tencent.timpush:timpush:7.7.5282'// 按照需要集成对应厂商implementation 'com.tencent.timpush:huawei:7.7.5282'implementation 'com.tencent.timpush:xiaomi:7.7.5282'implementation 'com.tencent.timpush:oppo:7.7.5282'implementation 'com.tencent.timpush:vivo:7.7.5282'implementation 'com.tencent.timpush:honor:7.7.5282'implementation 'com.tencent.timpush:meizu:7.7.5282'implementation 'com.tencent.timpush:fcm:7.7.5282'
说明:无 UI 或者没有集成其他插件的用户,需要增加集成 TUICore,支持源码和 Maven 集成,方式如下:
def projects = this.rootProject.getAllprojects().stream().map { project -> project.name }.collect() api projects.contains("tuicore") ? project(':tuicore') : "com.tencent.liteav.tuikit:tuicore:7.7.5282"
vivo 和荣耀适配
根据 vivo 和荣耀厂商接入指引,需要将 APPID 和 APPKEY 添加到清单文件中,否则会出现编译问题。方法1方法2
android { ... defaultConfig { ... manifestPlaceholders = [ "VIVO_APPKEY" : "您应用分配的证书 APPKEY", "VIVO_APPID" : "您应用分配的证书 APPID", "HONOR_APPID" : "您应用分配的证书 APPID" ] }}
// vivo begin// vivo end
// honor begin// honor end
华为和 Google FCM 适配按照厂商方法,集成对应的 plugin 和 json 配置文件。1.1 下载配置文件添加到工程根目录。华为Google FCM添加到路径
1.2 在项目级 build.gradle 文件中 buildscript -> dependencies 下添加以下配置:
repositories { ... // 配置HMS Core SDK的Maven仓地址。 maven {url 'https://developer.huawei.com/repo/'}} dependencies { ... classpath 'com.google.gms:google-services:4.2.0' classpath 'com.huawei.agconnect:agcp:1.4.1.300'}
1.3 在应用级 build.gradle 文件中添加下方配置。
apply plugin: 'com.google.gms.google-services'apply plugin: 'com.huawei.agconnect'
以上步骤完成后,就可以收到离线推送通知了。注意:如果您想尽可能简单地接入 TIMPush 组件,您需要使用 TUICore 组件中的 TUILogin 提供的 login/logout 接口登录/登出,此时 TIMPush 组件会自动感知登录/登出事件。如果您不想使用 TUILogin 提供的接口,您需要在完成登录/登出操作后,手动调用 TIMPushManager 的接口 registerPush/unRegisterPush。
步骤3:发消息时设置离线推送参数
调用 sendMessage 发送消息时,您可以通过 V2TIMOfflinePushInfo 设置离线推送参数。调用 V2TIMOfflinePushInfo 的setExt 设置自定义 ext 数据,当用户收到离线推送启动 App 的时候,可以在点击通知跳转的回调中获取到 ext 字段,然后根据 ext 字段内容跳转到指定的 UI 界面。可以参照 ChatProvider 的 sendMessage() 方法:
V2TIMOfflinePushInfo v2TIMOfflinePushInfo = new V2TIMOfflinePushInfo();v2TIMOfflinePushInfo.setTitle("推送标题");v2TIMOfflinePushInfo.setDesc("推送内容");
OfflineMessageContainerBean containerBean = new OfflineMessageContainerBean();OfflineMessageBean entity = new OfflineMessageBean();entity.content = message.getExtra().toString();entity.sender = message.getFromUser();entity.nickname = chatInfo.getChatName();entity.faceUrl = TUIChatConfigs.getConfigs().getGeneralConfig().getUserFaceUrl();containerBean.entity = entity;v2TIMOfflinePushInfo.setExt(new Gson().toJson(containerBean).getBytes());
// OPPO必须设置ChannelID才可以收到推送消息,这个channelID需要和控制台一致v2TIMOfflinePushInfo.setAndroidOPPOChannelID("tuikit");v2TIMOfflinePushInfo.setAndroidHuaWeiCategory("IM");v2TIMOfflinePushInfo.setAndroidVIVOCategory("IM");
final V2TIMMessage v2TIMMessage = message.getTimMessage();String msgID = V2TIMManager.getMessageManager().sendMessage(v2TIMMessage, isGroup ? null : userID, isGroup ? groupID : null, V2TIMMessage.V2TIM_PRIORITY_DEFAULT, false, v2TIMOfflinePushInfo, new V2TIMSendCallback() { @Override public void onProgress(int progress) {
}
@Override public void onError(int code, String desc) { TUIChatUtils.callbackOnError(callBack, TAG, code, desc); }
@Override public void onSuccess(V2TIMMessage v2TIMMessage) { TUIChatLog.v(TAG, "sendMessage onSuccess:" + v2TIMMessage.getMsgID()); message.setMsgTime(v2TIMMessage.getTimestamp()); TUIChatUtils.callbackOnSuccess(callBack, message); } });
步骤4:解析离线推送消息
当收到推送时候,点击通知栏的点击事件,组件会以回调或者广播形式通知应用,应用在回调中配置 App 的跳转页面即可。注册回调时机建议放在应用 Application 的 oncreate() 函数中。回调方式如下:
TUICore.registerEvent(TUIConstants.TIMPush.EVENT_NOTIFY, TUIConstants.TIMPush.EVENT_NOTIFY_NOTIFICATION, new ITUINotification() { @Override public void onNotifyEvent(String key, String subKey, Map param) { Log.d(TAG, "onNotifyEvent key = " + key + "subKey = " + subKey); if (TUIConstants.TIMPush.EVENT_NOTIFY.equals(key)) { if (TUIConstants.TIMPush.EVENT_NOTIFY_NOTIFICATION.equals(subKey)) { if (param != null) { String extString = (String)param.get(TUIConstants.TIMPush.NOTIFICATION_EXT_KEY); // 获取 ext 自定义跳转 } } } } });
广播方式如下:
// 动态注册广播IntentFilter intentFilter = new IntentFilter();intentFilter.addAction(TUIConstants.TIMPush.NOTIFICATION_BROADCAST_ACTION);LocalBroadcastManager.getInstance(context).registerReceiver(localReceiver, intentFilter);
//广播接收者public class OfflinePushLocalReceiver extends BroadcastReceiver { public static final String TAG = OfflinePushLocalReceiver.class.getSimpleName();
@Override public void onReceive(Context context, Intent intent) { DemoLog.d(TAG, "BROADCAST_PUSH_RECEIVER intent = " + intent); if (intent != null) { String ext = intent.getStringExtra(TUIConstants.TIMPush.NOTIFICATION_EXT_KEY); // 获取 ext 自定义跳转 } else { DemoLog.e(TAG, "onReceive ext is null"); } }}
步骤5:消息触达统计配置
如果您需要统计触达数据,请按照如下完成配置:华为荣耀vivo魅族
回执地址:https://api.im.qcloud.com/v3/offline_push_report/huawei
注意:华为推送证书 ID <= 11344 ,使用华为推送 v2 版本接口,不支持触达和点击回执,请重新生成更新证书 ID 。
回执地址:https://api.im.qcloud.com/v3/offline_push_report/honor
回调地址配置 | 回执 ID 配置 IM 控制台 |
![]() 回执地址: https://api.im.qcloud.com/v3/offline_push_report/vivo |
![]() |
打开回执开关 | 配置回执地址 |
![]() |
![]() |
回执地址:https://api.im.qcloud.com/v3/offline_push_report/meizu
注意:打开回执开关后,请务必确保回执地址正确配置。不配置或者配置地址错误,都会影响推送功能。
其余支持厂商不需要配置,FCM 暂不支持推送统计功能。恭喜您已经完成了推送插件的接入,需要提醒您:消息推送插件试用或购买到期后,将自动停止提供推送服务(包括普通消息离线推送、全员推送等服务)。为避免影响您业务正常使用,请提前购买/续费。
对即时通讯IM解决方案有疑惑?想了解解决方案收费? 联系解决方案专家
腾讯云限时活动1折起,即将结束: 马上收藏
同尘科技为腾讯云授权服务中心,购买腾讯云享受折上折,更有现金返利:同意关联,立享优惠
阿里云解决方案也看看?: 点击对比阿里云的解决方案
暂无评论,你要说点什么吗?