集成百度推送

查看百度官方文档,下载好最新的sdk解压后,按要求放到项目中来,,的jar包还要右键 add lib,然后开始往manifest里面添加权限和服务等,

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
          package="com.example.administrator.wisdomkiosks">
    <!-- 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.com.example.administrator.wisdomkiosks"/>
    <permission
        android:name="baidu.push.permission.WRITE_PUSHINFOPROVIDER.com.example.administrator.wisdomkiosks"
        android:protectionLevel="signature">
    </permission>


    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/Theme.AppCompat.NoActionBar">

        <!-- 在百度开发者中心查询应用的API Key -->
        <meta-data
            android:name="api_key"
            android:value="3kE3q1OCNpvRepRaCnrR0A3Q"/>

        <!-- 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声明,写权限包含应用包名-->
        <provider
            android:name="com.baidu.android.pushservice.PushInfoProvider"
            android:authorities="com.example.administrator.wisdomkiosks.bdpush"
            android:exported="true"
            android:protectionLevel="signature"
            android:writePermission="baidu.push.permission.WRITE_PUSHINFOPROVIDER.com.example.administrator.wisdomkiosks"/>

        <!-- push结束 -->

        <!-- 此处Receiver名字修改为当前包名路径 -->
        <receiver android:name="com.example.administrator.wisdomkiosks.MyPushReceiver">
            <intent-filter>
                <action android:name="com.baidu.android.pushservice.action.notification.SHOW"/>
                <!-- 接收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>


        <activity android:name="com.example.administrator.wisdomkiosks.MainActivity">

            <intent-filter>
                <action android:name="android.intent.action.MAIN"/>

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

    </application>

</manifest>

注意除了权限以外,其他所有的服务等都要放到application标签里面去才可以。

自己新建 MyPushReceiverjicheng继承PushMessageReceiver,并重写父类所有方法 ,用来收云推送回调信息和推送到达信息。

到此,继承基本完成,运行项目,在消息中

看到这样的信息就是成功了,可以去试试做推送了。

原文地址:https://www.cnblogs.com/laoyimou/p/7371480.html