写点什么

唠一唠融云 VIVO push 无法跳转的解决方案

发布于: 2021 年 03 月 15 日

在集成融云 SDK 的过程中,不可避免的是要收到推送,由于为了保证到达率,所以集成了融云的厂商推送,在集成之后,发现个问题,VIVO 推送收到通知栏之后点击是无法进行跳转的,通过咨询融云的技术同学,解决了此问题。


以下是解决此问题的解决方案,记录在此,以供大家参考;


首先需要复写 VivoPushMessageReceiver ,然后在 onNotificationMessageClicked 方法中进行捕捉;

   public class MY extends VivoPushMessageReceiver {
复制代码


    @Override
复制代码


  public void onNotificationMessageClicked(Context context, UPSNotificationMessage message) {
复制代码


     
复制代码


   PushNotificationMessage pushNotificationMessage =  transformVivoToPushMessage(message.getTitle(), message.getContent(), message.getParams());
复制代码


   if (pushNotificationMessage != null) {
复制代码


   PushManager.getInstance().onNotificationMessageClicked(context, PushType.VIVO, pushNotificationMessage);
复制代码

} }2 . 其中 transformVivoToPushMessage 方法可以完全照抄我一下的方法。

 public static PushNotificationMessage transformVivoToPushMessage(String title, String content, Map<String, String> params) {
复制代码

if (params == null){ return null; }


    PushNotificationMessage pushNotificationMessage = null;
复制代码


    String rc = params.get("rc");
复制代码


    if (rc != null) {
复制代码


        try {
复制代码


            JSONObject rcJson = new JSONObject(rc);
复制代码


            pushNotificationMessage = new PushNotificationMessage();
复制代码


            pushNotificationMessage.setPushTitle(title);
复制代码


            pushNotificationMessage.setPushContent(content);
复制代码


            int conversationType = rcJson.optInt("conversationType");
复制代码


            pushNotificationMessage.setConversationType(RongPushClient.ConversationType.setValue(conversationType));
复制代码


            int sourceType = rcJson.optInt("sourceType");
复制代码


            pushNotificationMessage.setSourceType(getType(sourceType));
复制代码


            pushNotificationMessage.setSenderId(rcJson.optString("fromUserId"));
复制代码


            pushNotificationMessage.setObjectName(rcJson.optString("objectName"));
复制代码


            pushNotificationMessage.setPushId(rcJson.optString("id"));
复制代码


            pushNotificationMessage.setToId(rcJson.optString("tId"));
复制代码


            pushNotificationMessage.setTargetId(rcJson.optString("targetId"));
复制代码


            String appData = params.get("appData");
复制代码


            if (appData != null) {
复制代码


                pushNotificationMessage.setPushData(appData);
复制代码


            }
复制代码


        } catch (JSONException e) {
复制代码


            RLog.e("PushUtils", "transformToPushMessage:" + e.getMessage());
复制代码


            pushNotificationMessage = null;
复制代码


        }
复制代码


    }
复制代码


    return pushNotificationMessage;
复制代码


    }
复制代码


    
复制代码


    public static PushNotificationMessage.PushSourceType getType(int type) {
复制代码


    for (PushNotificationMessage.PushSourceType sourceType : PushNotificationMessage.PushSourceType.values()) {
复制代码


        if (sourceType.ordinal() == type) {
复制代码


            return sourceType;
复制代码


        }
复制代码


    }
复制代码


    return PushNotificationMessage.PushSourceType.LOCAL_MESSAGE;
复制代码


    }
复制代码

3 . 最后,将复写的 VivoPushMessageReceiver 在 AndroidMainfest 中进行注册即可 。


用户头像

还未添加个人签名 2021.01.26 加入

还未添加个人简介

评论

发布
暂无评论
唠一唠融云 VIVO push 无法跳转的解决方案