Android百度消息推送

       本文对Android百度消息推送的使用做总结。这里是消息推送,不是视频的推送流。

一.百度推送的基础知识

(一)百度消息推送的作用:

       使用百度的服务器网页给所有的手机程序客户端推送消息,客户端程序会收到一个通知消息。

(二)百度消息推送的使用步骤:

1.创建百度云推送的应用,进行配置,要先建好工程,因为要程序的包名

2.下载百度推送的SDK

3.对工程进行配置,并运行程序

4.在百度消息推送网页进行消息推送

5.在手机客户端显示推送的消息

(三)百度消息推送的相关网址:

       首先你要注册一个百度的账号,一般人都会有的吧!

1.百度开发者网址http://developer.baidu.com/

2.百度云推送的网址(注意这里是020中的云推送,而不是云计算)http://developer.baidu.com/platform/s7

3.百度云推送的开发文档地址:http://push.baidu.com/doc/android/api

二.百度消息推送的详细讲解和示例开发

(一)创建一个Android项目,获取文件的包名,比如我的程序的包名为:fuxi.baidupulldemo

(二)在百度云推送的开发文档的地址链接中,点击创建应用,并设置应用的包名,获取API KEY,这是推送消息的关键。

图解1,创建应用:
c1
图解2,创建新应用:
c2

图解3,设置新应用的名称:
c3

图解4,创建成功后应用配置:
c4

图解5,设置应用配置,选择Android程序,填写程序包名:
c5

图解6,上面应用配置已经完成了,但是还是要先开通,选择刚创建的应用的应用配置:
c6
图解7,开通消息推送,并复制API KEY:
c7
图解8,开通应用后显示的结果:
c8

(三)下载百度消息推送的SDK,并把它的Lib文件放到程序中

1.下载SDK

s1

选择下载:
s2

2.点击下载到电脑后,解压到本地文件夹,选择lib中的文件和文件夹复制到要推送消息的程序中。

如图所示:
s3

配置build.gradle文件,如图所示:
s4
代码SourceSets:

sourceSets {
    main {
        jniLibs.srcDirs = ["libs"]
    }
}

依赖代码(针对的是下载的SDK):

compile files('libs/pushservice-5.5.0.50.jar')

(四)创建MyApp.java文件,注册百度云的消息推送,这里就要使用到百度云中的APIKEY了。

package fuxi.baidupulldemo;

import android.app.Application;

import com.baidu.android.pushservice.PushConstants;
import com.baidu.android.pushservice.PushManager;

public class MyApp extends Application {
    @Override
    public void onCreate() {
        super.onCreate();
        //注册,第三个参数是要修改的API KEY的字符串
        PushManager.startWork(getApplicationContext(), PushConstants.LOGIN_TYPE_API_KEY, "g83yqOypV6lIEuFDAYYYTPew");

    }
}

(五)创建一个广播接收者类,继承百度云的广播接收者类,用来接收百度的推送消息并作相应的处理。

package fuxi.baidupulldemo;

import android.content.Context;
import android.util.Log;
import android.widget.Toast;

import com.baidu.android.pushservice.PushMessageReceiver;

import java.util.List;

/**
 * 广播接收者的定义
 */

public class PushTestReceiver extends PushMessageReceiver {
    @Override
    public void onBind(Context context, int i, String s, String s1, String s2, String s3) {
        Log.e("TAG", "广播接收者创建广播成功!");
    }

    @Override
    public void onUnbind(Context context, int i, String s) {

    }

    @Override
    public void onSetTags(Context context, int i, List<String> list, List<String> list1, String s) {

    }

    @Override
    public void onDelTags(Context context, int i, List<String> list, List<String> list1, String s) {

    }

    @Override
    public void onListTags(Context context, int i, List<String> list, String s) {

    }

    //接收到透传消息后的回调方法
    @Override
    public void onMessage(Context context, String s, String s1) {
        Log.e("TAG", "------消息-----" + s + "     " + s1);
    }

    //用户点击推送消息条目的回调方法
    @Override
    public void onNotificationClicked(Context context, String s, String s1, String s2) {
        Log.e("TAG", "--------点击---" + s + "     " + s1 + "    " + s2);
        //s代表的是标题,s1代表的是文本内容,s2没什么意义!
        //实现页面的跳转  //context.startActivity(new Intent(context, JumpActivity.class));
        Toast.makeText(context, s + "\n" + s1, Toast.LENGTH_LONG).show();
    }

    @Override
    public void onNotificationArrived(Context context, String s, String s1, String s2) {

    }


}

(六)MainActivity.java文件

这里MainActivity.java什么都不用做也是可以的。

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        setTitle("MainActivity");
        super.onCreate(savedInstanceState);
        TextView textView = new TextView(this);
        textView.append("主页面" + "\n");
        setContentView(textView);

    }
}

(七)配置AndroidManifest.xml这也是比较关键的一步,需要设置的内容也是蛮多的。

你也可以参考一下官方的开发文档中心的说明:
http://push.baidu.com/doc/android/api

1.添加权限

!-- Push service 运行需要的权限 -->
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
<uses-permission android:name="android.permission.WRITE_SETTINGS" />
<uses-permission android:name="android.permission.VIBRATE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.DISABLE_KEYGUARD" />
<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_DOWNLOAD_MANAGER" />
<uses-permission android:name="android.permission.DOWNLOAD_WITHOUT_NOTIFICATION" />
<uses-permission android:name="android.permission.EXPAND_STATUS_BAR" />

<!-- 适配Android N系统必需的ContentProvider写权限声明,写权限包含应用包名-->
<uses-permission android:name="baidu.push.permission.WRITE_PUSHINFOPROVIDER.YourPackageName" />
<permission
    android:name="baidu.push.permission.WRITE_PUSHINFOPROVIDER.fYourPackageName"    android:protectionLevel="normal" />

2.添加服务或广播接收者组件

<!-- push service start -->
<!-- 用于接收系统消息以保证PushService正常运行 -->
<receiver
    android:name="com.baidu.android.pushservice.PushServiceReceiver"
    android:process=":bdservice_v1">
    <intent-filter>
        <action android:name="android.intent.action.BOOT_COMPLETED" />
        <action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
        <action android:name="com.baidu.android.pushservice.action.notification.SHOW" />
        <action android:name="com.baidu.android.pushservice.action.media.CLICK" />
        <!-- 以下四项为可选的action声明,可大大提高service存活率和消息到达速度 -->
        <action android:name="android.intent.action.MEDIA_MOUNTED" />
        <action android:name="android.intent.action.USER_PRESENT" />
        <action android:name="android.intent.action.ACTION_POWER_CONNECTED" />
        <action android:name="android.intent.action.ACTION_POWER_DISCONNECTED" />
    </intent-filter>
</receiver>
<!-- Push服务接收客户端发送的各种请求-->
<receiver
    android:name="com.baidu.android.pushservice.RegistrationReceiver"
    android:process=":bdservice_v1">
    <intent-filter>
        <action android:name="com.baidu.android.pushservice.action.METHOD" />
        <action android:name="com.baidu.android.pushservice.action.BIND_SYNC" />
    </intent-filter>
    <intent-filter>
        <action android:name="android.intent.action.PACKAGE_REMOVED" />
        <data android:scheme="package" />
    </intent-filter>
</receiver>
<service
    android:name="com.baidu.android.pushservice.PushService"
    android:exported="true"
    android:process=":bdservice_v1">
    <intent-filter>
        <action android:name="com.baidu.android.pushservice.action.PUSH_SERVICE" />
    </intent-filter>
</service>

<!-- 4.4版本新增的CommandService声明,提升小米和魅族手机上的实际推送到达率 -->
<service
    android:name="com.baidu.android.pushservice.CommandService"
    android:exported="true" />

<!-- 适配Android N系统必需的ContentProvider声明,写权限包含应用包名-->
<!-- 请将fuxi.baidupulldemo替换成用户自己的包名。-->
<provider
    android:name="com.baidu.android.pushservice.PushInfoProvider"
    android:authorities="YourPackageNamebdpush"
    android:exported="true"
    android:protectionLevel="signature"
    android:writePermission="baidu.push.permission.WRITE_PUSHINFOPROVIDER.YourPackageName" />

<!-- 广播接收者的定义,这里是自定义的广播接收者哦 -->
<receiver android:name=".PushTestReceiver">
    <intent-filter>
        <!-- 接收push消息 -->
        <action android:name="com.baidu.android.pushservice.action.MESSAGE" />
        <!-- 接收bind、setTags等method的返回结果-->
        <action android:name="com.baidu.android.pushservice.action.RECEIVE" />
        <!-- 接收通知点击事件,和通知自定义内容 -->
        <action android:name="com.baidu.android.pushservice.action.notification.CLICK" />
    </intent-filter>
</receiver>

<!-- push结束 -->

3.注册MyApp

<application
    android:name=".MyApp"
。。。

       配置Manifest文件之后,请将YourPackageName替换成用户自己的包名。上面一共有四处要修改的地方,不要改少了。

到这里,运行程序后,就可以进行消息推送了!

(八)消息推送给手机程序:

图解1:开始推送:
t1

图解2,创建推送的通知
t2

图解3,设置推送通知的内容和标题:
t3

图解4,发送消息后,手机通知栏的显示:
t4

图解5,点击通知信息后的显示:
t5
图解6,再看发送消息的服务端的数据显示:
t6

       到这里百度云的消息推送基本是完成了,这里也是可以发送透传指令消息,就不演示了。
       只是有一个不是很理解的地方,就是在广播接收者的回调方法里面不能进行页面的跳转,我试过startActivity方法没有效果,不知为啥。但是吐司是可以的,看上面就知道。

程序设计的源码下载的地址:http://download.csdn.net/detail/wenzhi20102321/9722731

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

峥嵘life

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值