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 的仓库地址 -- 必填

并在项目module的build文件夹 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

集成Bmob推送的更多相关文章

  1. 1、Android Studio集成极光推送(Jpush) 报错 java.lang.UnsatisfiedLinkError: cn.jpush.android.service.PushProtoco

    Android studio 集成极光推送(Jpush) (华为手机)报错, E/JPush: [JPushGlobal] Get sdk version fail![获取sdk版本失败!] W/Sy ...

  2. Swift3集成极光推送

      现在很多程序都开始使用Swift开发了,但是第三方库大多数都是用OC写的,所以我们要使用Swift和OC混编.今天的内容主要讲Swift3.0集成极光推送. 1.准备工作   集成指南,极光上说的 ...

  3. C#—ASP.NET:集成极光推送(Push API v3)

    C#—ASP.NET:集成极光推送(Push API v3) 原文地址: https://blog.csdn.net/CXLLLK/article/details/86489994   1.极光推送官 ...

  4. 李洪强iOS之集成极光推送三iOS集成指南

    李洪强iOS之集成极光推送三iOS集成指南 SDK说明 适用版本 本文匹配的 SDK版本:r2.1.5 以后.查看最近更新了解最新的SDK更新情况.使用Xcode 6及以上版本可以使用新版Push S ...

  5. 李洪强iOS之集成极光推送二iOS 证书 设置指南

    李洪强iOS之集成极光推送二iOS 证书 设置指南 创建应用程序ID 登陆 iOS Dev Center 选择进入iOS Provisioning Portal. 在 iOS Provisioning ...

  6. 李洪强iOS之集成极光推送一iOS SDK概述

    李洪强iOS之集成极光推送一iOS SDK概述 JPush iOS 从上图可以看出,JPush iOS Push 包括 2 个部分,APNs 推送(代理),与 JPush 应用内消息. 红色部分是 A ...

  7. ThinkPHP 3.2.x 集成极光推送指北

    3.2版本已经过了维护生命周期,官方已经不再维护,请及时更新至5.0版本 -- ThinkPHP 官方仓库 以上,如果有条件,请关闭这个页面,然后升级至 ThinkPHP 5,如果由于各种各样的原因无 ...

  8. QtAndroid具体解释(6):集成信鸽推送

    推送是我们开发移动应用经经常使用到的功能,Qt on Android 应用也会用到,之前也有朋友问过,这次我们来看看怎么在 Qt on Android 应用中来集成来自腾讯的信鸽推送. 有关信鸽的 S ...

  9. ionic2集成极光推送

    ionic2集成极光推送: ionic2api:https://ionicframework.com/docs/ 极光推送官网:https://www.jiguang.cn android-怎么注册极 ...

随机推荐

  1. icheck使用

    1.使用: <link rel="stylesheet" href="css/skins/all.css">或者<link rel=" ...

  2. Django 框架入门

    1.创建虚拟环境.(如果你想在你的服务器中运行多个项目,那么装虚拟环境是最好的选择) pip install virtualenv pip install virtualenvwrapper 安装好后 ...

  3. Jquery向页面append新元素之后,如何解决事件的绑定问题?

    今天有get到一个新知识点,就是当我们向页面添加新的元素之后,加载之前的函数方法就对新元素失效了,下面我来说说如何解决这个问题的? 我先看jq api文档没有找到方法,无果只好到网上找些资料,果然找到 ...

  4. Proc、宿主变量、指示变量、数组变量、通信区sqlca,oraca ---(day07)

    PROC 主要内容: ) proc简介 ) proc程序的开发过程 ) 宿主变量和指示变量 ) 嵌入sql语句 ) 连接数据库 ) 错误处理 ) 数据的存取更新操作 ) 动态sql --------- ...

  5. [luogu1627 CQOI2009] 中位数 (乱搞)

    传送门 Solution 好水的题(ーー;) Code //By Menteur_Hxy #include <map> #include <queue> #include &l ...

  6. 爬虫系列(二) Chrome抓包分析

    在这篇文章中,我们将尝试使用直观的网页分析工具(Chrome 开发者工具)对网页进行抓包分析,更加深入的了解网络爬虫的本质与内涵 1.测试环境 浏览器:Chrome 浏览器 浏览器版本:67.0.33 ...

  7. 强大的jQuery图片查看器插件Viewer.js

    简介 Viewer.js 是一款强大的图片查看器 Viewer.js 有以下特点: 支持移动设备触摸事件 支持响应式 支持放大/缩小 支持旋转(类似微博的图片旋转) 支持水平/垂直翻转 支持图片移动 ...

  8. 9.Spring的IOC+MyBaits+log4j+Servlet

    1.创建如下mysql脚本 drop table if exists book_info; create table if not exists book_info( book_id ) primar ...

  9. mysql deadlock、Lock wait timeout解决和分析

    项目上线 线上遇到大量的deadlock 和wait timeout 但是看程序没什么问题 问dba也不能给出很好的解决方案!最终自己去了解mysql锁 以及看mysq锁日志 如果了解mysql锁的机 ...

  10. 百度之星2014初赛 - 1002 - Grids

    先上题目: Grids Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 65535/65535 K (Java/Others)Tota ...