Android安卓集成融云推送踩坑

1 篇文章 0 订阅
1 篇文章 0 订阅

此文档单单接入推送,暂时没有用IM或其他

如果您觉得可以帮助到您,麻烦帮我点个赞.

--------------------------------

写在前面,为什么要用这个,我并不想,实际接入过程中也很多坑,搜一下几乎没有任何踩坑的博客,提交的工单回复的很官方,BTW,这可是付费的推送服务哦,居然没有技术支持的群,想要技术支持,可以,付钱吧,300块钱4个电话支持/10个实时工单,楼主由于着急,就选的电话支持,因为提了好几个工单,都没有告诉我,app没有被杀掉的情况我怎么处理,因为没有被杀掉是不会走推送通道的,人家也告诉我本地消息也不会有pushdata,那我怎么办

----------------------------------

一些坑:

1,人家的技术已经暗地里说的很明白了,安卓必须要接入厂商推送,他们自己测自己的融云推送到达率很低,跟一坨shi一样,添加引用的时候,两个都需要

implementation rootProject.ext.dependencies["im-lib"]
implementation rootProject.ext.dependencies["im-kit"]

2,推送只有在app被杀掉的情况才会有,推送接受的地方,写的很好哈, 返回 false, 会走融云 SDK 默认处理逻辑,说什么sdk会帮你弹出通知,亲测,一次都没看看到过

import android.content.Context;
import android.content.Intent;
import android.os.Bundle;

import com.blankj.utilcode.util.LogUtils;
import com.huawei.hms.support.api.entity.core.CommonCode;
import com.zgzx.metaphysics.ui.activities.SplashActivity;

import io.rong.push.PushType;
import io.rong.push.notification.PushMessageReceiver;
import io.rong.push.notification.PushNotificationMessage;

public class SealNotificationReceiver extends PushMessageReceiver {

    @Override
    public boolean onNotificationMessageArrived(Context context, PushType pushType,
                                                PushNotificationMessage pushMsg) {
        //不落地推送
//    


        return true; // 返回 false, 会弹出融云 SDK 默认通知; 返回 true, 融云 SDK 不会弹通知, 通知需要由您自定义。
    }

    @Override
    public boolean onNotificationMessageClicked(Context context, PushType pushType,
                                                PushNotificationMessage pushNotificationMessage) {


        //小米手机点击通知栏的方式
        Intent intent = new Intent(context, SplashActivity.class);
        Bundle bundle = new Bundle();
        bundle.putString("appData", pushNotificationMessage.getPushData());
        intent.putExtras(bundle);
        intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        context.startActivity(intent);

        LogUtils.aTag("PUSH-receiver", pushNotificationMessage);
        return true;


//        return false; // 返回 false, 会走融云 SDK 默认处理逻辑, 即点击该通知会打开会话列表或会话界面; 返回 true, 则由您自定义处理逻辑。
    }

    /**
     * 第三方push状态回调
     *
     * @param pushType   push类型
     * @param action     当前的操作,连接或者获取token
     * @param resultCode 返回的错误码
     */
    public static boolean needUpdate = false;

    @Override
    public void onThirdPartyPushState(PushType pushType, String action, long resultCode) {
        super.onThirdPartyPushState(pushType, action, resultCode);
        if (pushType.equals(PushType.HUAWEI)) {
            if (resultCode == CommonCode.ErrorCode.CLIENT_API_INVALID) {
                //设置标记位,引导用户升级
                needUpdate = true;
            }
        }
    }
}

3,app活跃的时候怎么办? 不好意思,不走推送,走本地通知,就是  收本地消息的地方,init之后使用
RongIMClient.setOnReceiveMessageListener(new MyReceiveMessageListener())

然后呢,让后台把push内容放到content里面,app端收到之后,当作自定义消息来解析出来,

神奇的是当你按照文档来做的时候可能解析不成功,还是unknowmessage: https://docs.rongcloud.cn/im/imkit/android/conversation/custom_message/

👇文档写法

RongIM.registerMessageType(CustomizeMessage.class);
RongIM.getInstance().registerMessageTemplate(new CustomizeMessageItemProvider);

 

无奈尝试

try {

    RongIMClient.registerMessageType(CustoizeMessage.class);
} catch (AnnotationNotFoundException e) {
    e.printStackTrace();
}
RongIM.registerMessageTemplate(new CustomizeMessageItemProvider());

这样就行了

还要注意在清单文件里粘贴文档里的其他厂商需要的service或者receiver的时候⚠️报错,可能是厂商的推送jar/aar更新了,文档没有更新,需要自行手动修改

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值