码迷,mamicode.com
首页 > 其他好文 > 详细

使用【百度云推送】第三方SDK实现推送功能详解

时间:2014-07-09 09:35:19      阅读:198      评论:0      收藏:0      [点我收藏+]

标签:百度云   推送   

之前介绍过如何使用shareSDK实现新浪微博分享功能,今天介绍如何使用百度云推送SDK实现Android手机后台推送功能。

运行效果如下

bubuko.com,布布扣


第一步,如果使用百度的SDK,当然要先成为百度的开发者啦,这个就不详述了。成为开发者之后,我们要建立一个应用,如下图所示

bubuko.com,布布扣


第二步,创建好应用之后,我们点击开方者服务管理,进入工程管理页面,然后点击左侧云推送,进入云推送功能页面,具体如下图

bubuko.com,布布扣


进入云推送详细页面之后,我们点击推送设置,设置好我们的应用的包名,然后点击快速实例,将系统给我们产生的示例代码下载下来

bubuko.com,布布扣

下载实例代码


bubuko.com,布布扣


第三步,将实例代码导入Eclipse,开始准备整合。

实例代码结构如下

bubuko.com,布布扣


经过整合之后,我们的Demo代码如下

bubuko.com,布布扣


主要有这么几个注意点:

1.MainActivity中代码如下

public class MainActivity extends Activity {

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		initWithApiKey();
	}

	// 无账号初始化,用api key绑定
	private void initWithApiKey() {
		PushManager.startWork(getApplicationContext(),
				PushConstants.LOGIN_TYPE_API_KEY,
				"FKkvaMToo1wkeIFEcH7udatc");
	}

}

在主界面要进行api key的绑定,“FKkvaMToo1wkeIFEcH7udatc”这一串数值是应用的api key,在下面这个地方可以获取

bubuko.com,布布扣

2.在MyApplication中,我们需要自定义Application,并按照下面实现(不光有这种形式,更多信息还是看百度SDK的说明文档,说得很详细)

public class MyApplication extends FrontiaApplication {

	@Override
	public void onCreate() {
		super.onCreate();
	}

}
自定义Application之后,我们需要在清单文件中进行设置

<application
        android:name="com.example.baidupush.MyApplication"
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >

3.MyPushMessageReceiver这个类是用来接收服务器发送来的请求的,我这里直接把实例代码中的拷贝了过来,具体功能实现还需要自己修改

4.Utils这个类不是关键代码,可以无视

5.必须把libs文件夹下面的资源包拷过来

6.如果要实现富媒体推送,还需要把资源图片和布局也拷贝过来

7.清单文件配置很重要,下面是配置代码和说明

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    package="com.example.baidupush"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="14"
        android:targetSdkVersion="19" />

    <!-- 推送权限,必须加 -->
    <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" />

    <application
        android:name="com.example.baidupush.MyApplication"
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name="com.example.baidupush.MainActivity"
            android:launchMode="singleTask"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

        <!-- push应用定义消息receiver声明 ,这是对前面MyPushMessageReceiver的注册-->
        <receiver android:name="com.example.baidupush.MyPushMessageReceiver" >
            <intent-filter>
                <!-- 接收push消息 -->
                <action android:name="com.baidu.android.pushservice.action.MESSAGE" />
                <!-- 接收bind,unbind,fetch,delete等反馈消息 -->
                <action android:name="com.baidu.android.pushservice.action.RECEIVE" />
                  <!-- 接收notification的点击事件 -->
                <action android:name="com.baidu.android.pushservice.action.notification.CLICK" />
            </intent-filter>
        </receiver>

        <!-- push必须的receviver和service声明 ,不用修改,直接拷贝-->
        <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" />
            </intent-filter>
        </receiver>
        <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>
        <!-- push结束 -->

    </application>

</manifest>

这样,当我们在百度的云推送后台发送推送信息的时候,客户端就可以收到来自我们后台的推送了。

除此之外,百度云推送还有一些其他功能,比如设置点击notification之后的显示界面、响声,富文本推送,自定义notification显示样式等等,如果想了解这些,还是下载SDK文档,文档说的很清楚。

CSDN的上传资源网页挂掉了,先不传代码了。



使用【百度云推送】第三方SDK实现推送功能详解,布布扣,bubuko.com

使用【百度云推送】第三方SDK实现推送功能详解

标签:百度云   推送   

原文地址:http://blog.csdn.net/zhaokaiqiang1992/article/details/37561105

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!