集成极光推送

Posted 紫虹载雪

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了集成极光推送相关的知识,希望对你有一定的参考价值。

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

 

Lz 寄语: 极光推送, 跟着套路走

 

官方文档: http://docs.jiguang.cn/ 

集成文档: http://docs.jiguang.cn/jpush/client/android/android_guide/ 

 

 

Step 1: 直接查看集成文档

Step 2: Jcenter 自动集成

2.1 modulebuild中添加依赖

Android --> defaultConfig 中配置:  (若是有问题查看官方文档)

 ndk {  //选择要添加的对应cpu类型的.so库。

     abiFilters \'armeabi\', \'armeabi-v7a\', \'arm64-v8a\' // 还可以添加 \'x86\', \'x86_64\', \'mips\', \'mips64\'

 }

manifestPlaceholders = [

      JPUSH_PKGNAME : applicationId,

      JPUSH_APPKEY : "你的appkeyID", //JPush上注册的包名对应的appkey.

      JPUSH_CHANNEL : "自定义渠道名称", //用户渠道统计的渠道名称

]

dependencies {

    compile \'cn.jiguang.sdk:jpush:3.0.5\'  // 此处以JPush 3.0.5 版本为例。

compile \'cn.jiguang.sdk:jcore:1.1.2\'  // 此处以JCore 1.1.2 版本为例。

}

 

Step 3: 配置Manifest文件

3.1 添加权限

    <!-- Required -->

    <permission

        android:name="您应用的包名.permission.JPUSH_MESSAGE"  

        android:protectionLevel="signature" />

 

    <!-- Required -->

    <uses-permission android:name="您应用的包名.permission.JPUSH_MESSAGE" />

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

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

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

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

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

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

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

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

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

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

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

 

    <!-- Optional. Required for location feature -->

    <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" /> <!-- 用于开启 debug 版本的应用在6.0 系统上 层叠窗口权限 -->

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

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

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

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

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

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

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

        <!-- Required SDK 核心功能-->

        <!-- 可配置android:process参数将PushService放在其他进程中 -->

        <service

            android:name="cn.jpush.android.service.PushService"

            android:enabled="true"

            android:exported="false" >

            <intent-filter>

                <action android:name="cn.jpush.android.intent.REGISTER" />

                <action android:name="cn.jpush.android.intent.REPORT" />

                <action android:name="cn.jpush.android.intent.PushService" />

                <action android:name="cn.jpush.android.intent.PUSH_TIME" />

            </intent-filter>

        </service>

 

        <!-- since 1.8.0 option 可选项。用于同一设备中不同应用的JPush服务相互拉起的功能。 -->

        <!-- 若不启用该功能可删除该组件,将不拉起其他应用也不能被其他应用拉起 -->

         <service

             android:name="cn.jpush.android.service.DaemonService"

             android:enabled="true"

             android:exported="true">

             <intent-filter >

                 <action android:name="cn.jpush.android.intent.DaemonService" />

                 <category android:name="您应用的包名"/>

             </intent-filter>

         </service>

 

        <!-- Required SDK核心功能-->

        <receiver

            android:name="cn.jpush.android.service.PushReceiver"

            android:enabled="true" >

          <intent-filter android:priority="1000">

                <action android:name="cn.jpush.android.intent.NOTIFICATION_RECEIVED_PROXY" />

                <category android:name="您应用的包名"/>

            </intent-filter>

            <intent-filter>

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

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

            </intent-filter>

            <!-- Optional -->

            <intent-filter>

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

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

                <data android:scheme="package" />

            </intent-filter>

        </receiver>

 

        <!-- Required SDK核心功能-->

        <activity

            android:name="cn.jpush.android.ui.PushActivity"

            android:configChanges="orientation|keyboardHidden"

            android:theme="@android:style/Theme.NoTitleBar"

            android:exported="false" >

            <intent-filter>

                <action android:name="cn.jpush.android.ui.PushActivity" />

                <category android:name="android.intent.category.DEFAULT" />

                <category android:name="您应用的包名" />

            </intent-filter>

        </activity>

        <!-- SDK核心功能-->

        <activity

            android:name="cn.jpush.android.ui.PopWinActivity"

            android:configChanges="orientation|keyboardHidden"

            android:exported="false"

            android:theme="@style/MyDialogStyle">

            <intent-filter>

                <category android:name="android.intent.category.DEFAULT" />

                <category android:name="您应用的包名" />

            </intent-filter>

        </activity>

 

        <!-- Required SDK核心功能-->

        <service

            android:name="cn.jpush.android.service.DownloadService"

            android:enabled="true"

            android:exported="false" >

        </service>

 

        <!-- Required SDK核心功能-->

        <receiver android:name="cn.jpush.android.service.AlarmReceiver" />

 

        <!-- User defined. 用户自定义的广播接收器-->

         <receiver

             android:name="您自己定义的Receiver"

             android:enabled="true">

             <intent-filter>

                 <!--Required 用户注册SDK的intent-->

                 <action android:name="cn.jpush.android.intent.REGISTRATION" />

                 <!--Required 用户接收SDK消息的intent-->

                 <action android:name="cn.jpush.android.intent.MESSAGE_RECEIVED" />

                 <!--Required 用户接收SDK通知栏信息的intent-->

                 <action android:name="cn.jpush.android.intent.NOTIFICATION_RECEIVED" />

                 <!--Required 用户打开自定义通知栏的intent-->

                 <action android:name="cn.jpush.android.intent.NOTIFICATION_OPENED" />

                 <!-- 接收网络变化 连接/断开 since 1.6.3 -->

                 <action android:name="cn.jpush.android.intent.CONNECTION" />

                 <category android:name="您应用的包名" />

             </intent-filter>

         </receiver>

 

        <!-- Required. For publish channel feature -->

        <!-- JPUSH_CHANNEL 是为了方便开发者统计APK分发渠道。-->

        <!-- 例如: -->

        <!-- 发到 Google Play 的APK可以设置为 google-play; -->

        <!-- 发到其他市场的 APK 可以设置为 xxx-market。 -->

        <!-- 渠道统计报表位于控制台页面的 “统计”-“用户统计”-“渠道分布” 中-->

        <meta-data android:name="JPUSH_CHANNEL" android:value="developer-default"/>

        <!-- Required. AppKey copied from Portal -->

        <meta-data android:name="JPUSH_APPKEY" android:value="您应用的Appkey"/>

Step 4: 配置代码

4.1 启动推送服务

JPushInterface.setDebugMode(true); // 社会调试模式

JPushInterface.init(this);  // 初始化JPush

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

 

Write by lz

2017-06-06

以上是关于集成极光推送的主要内容,如果未能解决你的问题,请参考以下文章

thinkphp3.2集成极光推送

项目实战:iOS极光推送集成(30分钟搞定)

使用极光推送实现分组发送和服务端集成

极光推送

IONIC集成jPush极光推送

集成极光推送