美文网首页
云巴第三方华为推送

云巴第三方华为推送

作者: 敲你妹 | 来源:发表于2018-03-30 14:49 被阅读0次

华为手机 APP被杀也能收到消息

在华为官网获取相应的参数然后去云巴官网配置

华为参数
签名文件生成的sha256

jar包的获取

云巴的jar包

AndroidManifest.xml配置详情见demo

  • 权限

<uses-permission android:name="android.permission.RECEIVE_USER_PRESENT" />
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.WAKE_LOCK" />
    <uses-permission android:name="android.permission.READ_PHONE_STATE" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.VIBRATE" />
    <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.WRITE_SETTINGS" />

    <!-- for location only -->
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />


  
  • 参数配置
 <!-- YUNBA_APPKEY 值来自 Portal 上应用程序对应的 AppKey-->
        <meta-data
            android:name="YUNBA_APPKEY"
            android:value="参数" />
        <!-- YUNBA_SECRETKEY 值来自 Portal 上应用程序对应的 SecretKey-->
        <meta-data
            android:name="YUNBA_SECRETKEY"
            android:value="参数" />

        <!--配置华为的appid-->
        <meta-data
            android:name="com.huawei.hms.client.appid"
            android:value="参数" />
  • 其它
<service
            android:name="io.yunba.android.core.YunBaService"
            android:exported="true" />

        <!-- since 1.8.0 option 可选项。用于同一设备中不同应用的 YunBa服务相互拉起的功能。 -->
        <!-- 若不启用该功能可删除该组件,将不拉起其他应用也不能被其他应用拉起 -->
        <service
            android:name="io.yunba.android.core.YunBaDaemonService"
            android:enabled="true"
            android:exported="true">
            <intent-filter>
                <action android:name="com.android.intent.daemon.pullup" />
                <category android:name="你的applicationId xxxxxx" />
            </intent-filter>
        </service>

//自己定一个广播接收
        <receiver android:name="io.yunba.thirdpart.receiver.DemoReceiver">
            <intent-filter>
                <action android:name="io.yunba.android.MESSAGE_RECEIVED_ACTION" />
                <action android:name="io.yunba.android.PRESENCE_RECEIVED_ACTION" />
                <action android:name="io.yunba.android.MESSAGE_CONNECTED_ACTION" />
                <action android:name="io.yunba.android.MESSAGE_DISCONNECTED_ACTION" />
                <action android:name="io.yunba.android.MESSAGE_THIRD_PART_REGISTER_RESULT_ACTION"/>
                <category android:name="你的applicationId xxxxxx" />
            </intent-filter>
        </receiver>

        <receiver android:name="io.yunba.android.core.YunBaReceiver">
            <intent-filter>
                <action android:name="android.intent.action.USER_PRESENT" />
                <action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
            </intent-filter>
        </receiver>

<!-- 第三方相关 :接收Push消息(注册、Push消息、Push连接状态、标签,LBS上报结果)广播 -->
        <receiver android:name="io.yunba.android.thirdparty.receiver.ThirdPartyHWReceiver">
            <intent-filter>
                <!-- 必须,用于接收token-->
                <action android:name="com.huawei.android.push.intent.REGISTRATION" />
                <!-- 必须,用于接收消息-->
                <action android:name="com.huawei.android.push.intent.RECEIVE" />
                <!-- 可选,用于点击通知栏或通知栏上的按钮后触发onEvent回调-->
                <action android:name="com.huawei.android.push.intent.CLICK" />
                <!-- 可选,查看push通道是否连接,不查看则不需要-->
                <action android:name="com.huawei.intent.action.PUSH_STATE" />
                <!-- 可选,标签、地理位置上报回应,不上报则不需要 -->
                <action android:name="com.huawei.android.push.plugin.RESPONSE" />
            </intent-filter>
        </receiver>

        <receiver android:name="com.huawei.hms.support.api.push.PushEventReceiver">
            <intent-filter>
                <!-- 接收通道发来的通知栏消息,兼容老版本PUSH -->
                <action android:name="com.huawei.intent.action.PUSH" />
            </intent-filter>
        </receiver>
        <meta-data
            android:name="com.google.android.gms.version"
            android:value="@integer/google_play_services_version" />
看返回值
  • 混淆配置
-keep class com.hianalytics.android.**{*;}
-keep class com.huawei.hms.**{*;}
-keep class com.huawei.hms.support.api.**{*;}
-keep class com.xiaomi.**{*;}
-keep class org.apache.thrift.**{*;}
-dontwarn org.eclipse.paho.client.mqttv3.**
-keep class org.eclipse.paho.client.mqttv3.** { *; }
-keep class io.yunba.android.** { *; }
-dontnote io.yunba.android.**
-dontnote org.eclipse.paho.client.mqttv3.** 

参数配置正确在华为官网发消息就能收到了

发消息

重要的注意事项

  • 在华为官网SHA256一定要配置正确
  • 云巴官网一定要配置appid这些参数
  • app测试得时候一定要用正式版的签名文件,debug是不行的,这里容易忽略
  • 通过云巴api发消息notification_content这个json参数不能为空,为空收不到 , 我就被后端坑了
  • 华为移动服务更新一下


    最好配置一下签名文件,都引用正式签名文件
  • 去华为官网看看流程
    接入流程

  • 关于华为的自定义动作
    • 和我们使用Intent一样,显示意图隐式意图都可以,贴一下官方例子


      麻烦
腹肌撕裂者

上面配置完成就Ok了

自定义广播可以收到透传消息(可以不再通知栏显示,然后处理消息)

  • 这是在app内处理消息,被杀收不到
import com.huawei.hms.support.api.push.PushReceiver;

/**
 * Created by Administrator on 2018/3/30.
 */

public class MHwPushReceiver extends PushReceiver {
    @Override
    public void onToken(Context context, String token, Bundle extras) {
        System.out.println("push 收到消息token");
    }

    @Override
    public boolean onPushMsg(Context context, byte[] msg, Bundle bundle) {
        System.out.println("push onPushMsg    " + new String(msg));
        return true;//这里我是返回的true
    }


    public void onEvent(Context context, Event event, Bundle extras) {
        System.out.println("push onEvent");
    }

    @Override
    public void onPushState(Context context, boolean pushState) {
        System.out.println("push onPushState");
    }
}
  • 没去研究是哪一个action
<receiver
            android:name="文件路径.MHwPushReceiver"
            android:process=":pushservice">
            <intent-filter>
                <action android:name="com.huawei.android.push.intent.REFRESH_PUSH_CHANNEL"/>
                <action android:name="com.huawei.intent.action.PUSH"/>
                <action android:name="com.huawei.intent.action.PUSH_ON"/>
                <action android:name="com.huawei.android.push.PLUGIN"/>
                <action android:name="com.huawei.android.push.intent.RECEIVE"/>
            </intent-filter>
        </receiver>
  • 用于看日志的
    @Override
    public void onReceive(Context context, Intent intent) {

        //调试华为推送
        if (YunBaManager.MESSAGE_RECEIVED_ACTION.equals(intent.getAction())) {

            String status = "Yunba - Connected";

            String topicORalias = intent.getStringExtra(YunBaManager.MQTT_TOPIC);
            String message = intent.getStringExtra(YunBaManager.MQTT_MSG);
            YunBaManager.report(context, "1001", topicORalias);

            StringBuilder msgsb = new StringBuilder();
            msgsb.append("receive message from server: ")
                    .append("topic/alias").append(" = ").append(topicORalias).append(" ,")
                    .append(YunBaManager.MQTT_MSG).append(" = ").append(message);
            System.out.println("pointercnPush MESSAGE_RECEIVED_ACTION 1    " + msgsb.toString());

        } else if (YunBaManager.PRESENCE_RECEIVED_ACTION.equals(intent.getAction())) {
            String status = "Yunba - Connected";

            String topic = intent.getStringExtra(YunBaManager.MQTT_TOPIC);
            String message = intent.getStringExtra(YunBaManager.MQTT_MSG);
            StringBuilder msgsb = new StringBuilder();
            msgsb.append("receive message from presence: ")
                    .append(YunBaManager.MQTT_TOPIC).append(" = ").append(topic).append(" ,")
                    .append(YunBaManager.MQTT_MSG).append(" = ").append(message);
            System.out.println("pointercnPush PRESENCE_RECEIVED_ACTION 2      " + msgsb.toString());
        } else if (YunBaManager.MESSAGE_CONNECTED_ACTION.equals(intent.getAction())) {
            String status = "Yunba - Connected";
            System.out.println("pointercnPush PRESENCE_RECEIVED_ACTION 3      connection success.");
        } else if (YunBaManager.MESSAGE_DISCONNECTED_ACTION.equals(intent.getAction())) {
            String status = "Yunba - DisConnected";
            System.out.println("pointercnPush MESSAGE_DISCONNECTED_ACTION 4      connection fail.");
        } else if (YunBaManager.MESSAGE_THIRD_PART_REGISTER_RESULT_ACTION.equals(intent.getAction())) {
            // 获取该广播属于哪个平台,YunbaManager.PLATFORM_HMS 即华为,YunBaManager.PLATFORM_XIAOMI 即小米
            int platform = intent.getIntExtra(YunBaManager.THIRD_PART_PLATFORM, 0);
            if (platform == YunBaManager.PLATFORM_HMS) {
                // 获取 token 数据
                String token = intent.getStringExtra(YunBaManager.THIRD_PART_REGISTER_RESULT_CODE);
                System.out.println("pointercnPush MESSAGE_THIRD_PART_REGISTER_RESULT_ACTION 5   " + token);
            } else if (platform == YunBaManager.PLATFORM_XIAOMI) {
                // 获取 token 数据
                String token = intent.getStringExtra(YunBaManager.THIRD_PART_REGISTER_RESULT_CODE);
                System.out.println("pointercnPush MESSAGE_THIRD_PART_REGISTER_RESULT_ACTION 5   " + token);
            }
        }
    }

相关文章

  • 云巴第三方华为推送

    华为手机 APP被杀也能收到消息 在华为官网获取相应的参数然后去云巴官网配置 jar包的获取 AndroidMan...

  • 第三方推送平台的比较

    一、主流的第三方推送平台分类 手机厂商类:小米推送、华为推送; 第三方平台类:个推推送、极光推送、友盟推送;...

  • 关于推送平台调研

    一、业内主流推送平台分类: 手机生产商:小米推送、华为推送 第三方平台:极光推送、个推推送、友盟推送 BAT大厂:...

  • 友盟推送那些问题(iOS10)

    上周,公司要实现推送通知的功能,并决定在项目中集成友盟推送的 SDK来代替之前集成的云巴推送。 云巴推送是什么鬼?...

  • [常用服务:推送+短信+移动WEB]

    消息推送 腾讯-信鸽: 百度-百度云推送: 个推-: 极光推送: 华为推送平台 盛大推送 leancloud个推、...

  • 集成极光push,自定义通知显示大图,定制声音

    前提:集成极光推送,测试appkey和正式appkey,正式appkey是同时开通了第三方通道小米华为推送SDK的...

  • 集成Android推送前必看

    近期集成android推送,主要集成了:华为推送、小米推送、个推 1、第三方推送的互相拉起功能不一定靠谱,如果你集...

  • 百度云之富文本推送

    本文主要是用百度云第三方平台进行推送

  • 获取华为token、华为推送

    一、获取华为access_token 二、华为推送组装参数 三、推送

  • iOS极光推送开发入门

    一、什么叫极光推送 极光推送(JPush)是独立的第三方云推送平台,致力于为全球移动应用开发者提供移动消息推送服务...

网友评论

      本文标题:云巴第三方华为推送

      本文链接:https://www.haomeiwen.com/subject/qekicftx.html