zoukankan      html  css  js  c++  java
  • 集成Bmob推送

    Write By lz:  转发请注明原文地址: http://www.cnblogs.com/lizhilin2016/p/6952217.html

    Lz 寄语: Bmob 奇葩推送, 大坑, 想要推送必须先集成BmobSDK

    官方文档: https://www.bmob.cn/downloads  

     

    Step 1: 下载sdk 文件

    下载PushSDK 解压得到jar包放在lib 文件夹下, 查看文档,  按照文档指示写.

    Step 2: 配置Manifest文件

    2.1 添加权限

       <!--BmobSDK所需的权限 -->

        <uses-permission android:name="android.permission.INTERNET" />

        <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

        <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />

        <uses-permission android:name="android.permission.READ_PHONE_STATE" />

        <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

        <!--推送所需的权限-->

        <uses-permission android:name="android.permission.RECEIVE_USER_PRESENT" />

        <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />

     坑1 : 需要额外添加权限

    <uses-permission android:name="android.permission.GET_TASKS" />

    2.2 注册BmobPush SDK 运行所需推送服务和消息接收器

      <service

            android:label="PushService"

            android:name="cn.bmob.push.lib.service.PushService"

            android:process=":bmobpush"

            android:exported="true">

             <intent-filter>

                 <action android:name="cn.bmob.push.lib.service.PushService"/>

             </intent-filter>

        </service>

     

        <!-- 用于进程保活 -->

        <service

            android:name="cn.bmob.push.lib.service.PushNotifyService"

            android:process=":bmobpush" >

        </service>

     

        <receiver android:name="cn.bmob.push.PushReceiver" >

            <intent-filter>

                <!-- 系统启动完成后会调用 -->

                <action android:name="android.intent.action.BOOT_COMPLETED" />               

                <!-- 解锁完成后会调用 -->

                <action android:name="android.intent.action.USER_PRESENT" />

                <!-- 监听网络连通性 -->

                <action android:name="android.net.conn.CONNECTIVITY_CHANGE" />               

            </intent-filter>

        </receiver>

     

        <!-- 第四部中创建的消息接收器,在这里进行注册, 自定义接收器 -->

        <receiver android:name="your.package.MyPushMessageReceiver">

             <intent-filter >

                  <action android:name="cn.bmob.push.action.MESSAGE"/>

             </intent-filter>

        </receiver>

     

        <!-- 接收心跳和唤醒的广播,要和PushService运行在同个进程 -->

        <receiver

             android:name="cn.bmob.push.PushNotifyReceiver"

             android:process=":bmobpush" >

             <intent-filter>

                 <!-- 接收心跳广播的action -->

                 <action android:name="cn.bmob.push.action.HEARTBEAT" />

                 <!-- 接收唤醒广播的action -->

                 <action android:name="cn.bmob.push.action.NOTIFY" />

             </intent-filter>

        </receiver>

    Step 3: 配置代码

    3.1 消息接收器

    public class MyPushMessageReceiver extends BroadcastReceiver {

        @Override   // 结果是一个Json结构

        public void onReceive(Context context, Intent intent) {

            if(intent.getAction().equals(PushConstants.ACTION_MESSAGE)){

                Log.d("bmob", "客户端收到推送内容:"+intent.getStringExtra("msg"));

            }

        }

    }

    3.2 启动推送服务(建议在Application 中初始化)

    // 初始化BmobSDK

    Bmob.initialize(this, "你的AppKeyID");

    // 使用推送服务时的初始化操作BmobInstallation.getCurrentInstallation().save()

    ;// 启动推送服务

    BmobPush.startWork(this);

    2 : PushSDK 并没有Bmob, 无法完成初始化, 必须导入BmobSDK

    此处不能直接用gradle 导入, 而是必须使用lib 导包, 否则报多包异常Gson OKhttp3

    解决思路: 返回首页, 下载数据服务Android版本的sdk, 查看所有jar包和so文件如下

     

    拷贝除gson/okhttp/okio外所有jar, 拷贝到lib 文件夹下面, 并添加依赖jar

     

    新建jniLibs 目录在main文件夹下, 拷贝所有so文件

     

    (快速集成: http://docs.bmob.cn/data/Android/a_faststart/doc/index.html#SDK导入 )

    查看官方文档,  BmobSDK快速集成, 需要在项目build 文件中添加仓库地址

    maven { url "https://raw.github.com/bmob/bmob-android-sdk/master" }

    // Bmob 的仓库地址 -- 必填

     

    并在项目modulebuild文件夹 android下添加apache使用说明

          **兼容Android6.0系统所需,如果这句话报错,可在dependencies标签下使用

           compile 'cn.bmob.android:http-legacy:1.0'**

        useLibrary 'org.apache.http.legacy'

     

    并参照demo, 在同级目录下面添加 添加删除META_INF 信息:

    packagingOptions {
        exclude 'META-INF/rxjava.properties'
        exclude 'META-INF/maven/com.squareup.okhttp3/okhttp/pom.xml'
        exclude 'META-INF/maven/com.squareup.okhttp3/okhttp/pom.properties'
        exclude 'META-INF/maven/com.squareup.okio/okio/pom.xml'
        exclude 'META-INF/maven/com.squareup.okio/okio/pom.properties'
        exclude 'META-INF/maven/com.google.code.gson/gson/pom.xml'
        exclude 'META-INF/maven/com.google.code.gson/gson/pom.properties'
    }

    --------完成配置, 开始推送

    Write by lz

    2017-06-06

    以一颗童心善待生活
  • 相关阅读:
    效率分页代码
    serialPort控件(串口通信)
    C#事件DEMO
    泛型类
    简单的登陆页面
    hdu 1342+hdu 2660+hdu 2266+hdu 1704+hdu 1627+hdu 1539
    hdu 3987(求割边最小的最小割)
    hdu 1907(尼姆博弈)
    hdu 2149+hdu 1846(巴什博弈)
    hdu 2516(斐波那契博弈)
  • 原文地址:https://www.cnblogs.com/lizhilin2016/p/6952217.html
Copyright © 2011-2022 走看看