android 接入极光推送(极光通道和厂商通道)

1.在极光平台注册开发者账号
2.创建应用 头像 -》 服务中心-》开发者平台-》概览-》创建应用


1626862508(1).png

3.maven自动集成
(1)项目build.gradle配置mavenCentral

          buildscript {
    repositories {
        jcenter()
        mavenCentral()
    }
    ......
}

allprojects {
    repositories {
        jcenter()
        mavenCentral()
    }
}

(2)在module build.gradle中添加依赖和 AndroidManifest 的替换变量

 android {
        ......
        defaultConfig {
        applicationId "com.xxx.xxx" //JPush 上注册的包名.
        ......

        ndk {
            //选择要添加的对应 cpu 类型的 .so 库。
            abiFilters 'armeabi', 'armeabi-v7a', 'arm64-v8a'
            // 还可以添加 'x86', 'x86_64', 'mips', 'mips64'
        }

        manifestPlaceholders = [
            JPUSH_PKGNAME : applicationId,
            JPUSH_APPKEY : "你的 Appkey ", //JPush 上注册的包名对应的 Appkey.
            JPUSH_CHANNEL : "developer-default", //暂时填写默认值即可.
        ]
        ......
    }
    ......
    }

    dependencies {
    ......

    implementation 'cn.jiguang.sdk:jpush:4.2.4'  // 此处以JPush 4.2.4 版本为例。
    implementation 'cn.jiguang.sdk:jcore:2.9.0'  // 此处以JCore 2.9.0 版本为例。

    }

appkey在极光的企业应用运营平台的 应用设置 查看


1626862941(1).jpg

(3)如果你使用的 JCore 是 2.0.0 及以上的版本,需要额外在 Androidmanifest 中配置一个Service,以在更多手机平台上获得更稳定的支持,示例如下。(JCore1.x版本不需要)

  <application>
      ....
 <!-- Since JCore2.0.0 Required SDK核心功能-->
         <!-- 可配置android:process参数将Service放在其他进程中;android:enabled属性不能是false -->
         <!-- 这个是自定义Service,要继承极光JCommonService,可以在更多手机平台上使得推送通道保持的更稳定 -->
         <service android:name="xx.xx.XService"
                 android:enabled="true"
                 android:exported="false"
                 android:process=":pushcore">
                 <intent-filter>
                     <action android:name="cn.jiguang.user.service.action" />
                 </intent-filter>
         </service>    
    ....
</application>

(4)从JPush3.0.7开始,需要配置继承JPushMessageReceiver的广播

  <application>
      ....
<!-- Required since 3.0.7 -->
         <!-- 新的 tag/alias 接口结果返回需要开发者配置一个自定的广播 -->
         <!-- 3.3.0开始所有事件将通过该类回调 -->
         <!-- 该广播需要继承 JPush 提供的 JPushMessageReceiver 类, 并如下新增一个 Intent-Filter -->
         <receiver
               android:name="自定义 Receiver"
               android:enabled="true" 
               android:exported="false" >
               <intent-filter>
                    <action android:name="cn.jpush.android.intent.RECEIVE_MESSAGE" />
                    <category android:name="您应用的包名" />
               </intent-filter>
         </receiver>  
    ....
</application>

4.开始测试
创建一个推送通知发送


1626863319(1).jpg

如果手机接收到了发送的通知 说明集成极光sdk成功,但是此时的推送通知只能通过极光通道送达

5.集成厂商通道
为什么?
在国内 Android 生态中,推送通道都是由终端与云端之间的长链接来维持,严重依赖于应用进程的存活状态。如今一些手机厂家会在自家 rom 中做系统级别的推送通道,再由系统分发给各个 app,以此提高在自家 rom 上的推送送达率。
(1)华为通道
<1>在华为平台创建应用https://developer.huawei.com/cn/
管理中心->AppGallery Connect->我的项目->创建项目
创建完成之后 在项目设置中可以看到我们需要的配置信息
创建的过程中注意,华为这边的包名要与极光后台的保持一致 ,填写必要信息即可,不用上架,填写完保存就行。

1626918379(1).jpg

注意:SHA256证书指纹是必填的,指纹证书是在终端采用keytool -list -v -keystore keystorefileName
windos+r 输入cmd打开黑窗口
定位到你keytool目录下
例如
1626918891(1).jpg

输入keytool -list -v -keystore jks文件地址 命令
例如
1626919092(1).jpg

输入密码后得到jks文件信息
1626919230(1).jpg

<3>下载该应用的 agconnect-services.json 配置文件并添加到应用的 module 目录下。
<4>在项目 build.gradle 中添加规则,以纳入 HMS 服务插件 和 华为 的 Maven 代码库,可根据华为开发者联盟发布的版本更新选择最新版本:

 buildscript {
          repositories {
              google()
              jcenter()
              mavenCentral()
              maven {url 'http://developer.huawei.com/repo/'}
          }

         dependencies {
             classpath 'com.huawei.agconnect:agcp:1.4.2.300'
         }
     }

    allprojects {
          repositories {
              google()
              jcenter()
              mavenCentral()
              maven {url 'http://developer.huawei.com/repo/'}
          }
      }

<5>在应用 module 的 build.gradle 文件底部添加 apply plugin 代码行,以启用 gradle 插件:

// ADD THIS AT THE TOP
     apply plugin: 'com.huawei.agconnect'

<6> module的build.gradle添加依赖

    dependencies {
        implementation 'com.huawei.hms:push:5.3.0.301'
        //引入极光-华为插件,如果采用此配置,无需拷贝jpush-android-plugin-huawei-v4.x.x.jar文件,也无需配置cn.jpush.android.service.PluginHuaweiPlatformsService组件
        implementation 'cn.jiguang.sdk.plugin:huawei:4.1.5'

     }                            

具体华为依赖版本问题详情请查看官方文档

<7>在build.gradle中配置在华为后台添加的指纹证书对应的签名
生成或找到一个jks文件 将文件信息配置到build.gradle中

  signingConfigs {
          release {
              storeFile file("release.keystore")//签名文件的path
              storePassword "123456"
              keyAlias "android.keystore"
              keyPassword "123456"
          }
      }

<8>在极光后台配置华为应用信息


1626919552(1).jpg

配置完之后一定要启用,否则不能发送厂商通道推送通知


1626919646(1).jpg

至此 华为厂商通道集成完毕 可以在华为手机上清除后台app 发送一个厂商通道优先的消息进行测试
(2)小米厂商通道
<1>确认android studio的 Project 根目录的主 gradle 中配置了mavenCentral支持。(新建project默认配置就支持)

    buildscript {
        repositories {
            jcenter()
            mavenCentral()
        }
            ......
    }

    allprojets {
        repositories {
            jcenter()
            mavenCentral()
        }
    }

<2>在应用 module 的 gradle 中 dependencies 节点添加依赖:

    dependencies {
        implementation 'cn.jiguang.sdk.plugin:xiaomi:4.x.x'//版本号和对应的JPush版本号相同
    }

<3>在应用 module 的 gradle 中 defaultConfig 节点添加如下代码:
注意:不能将变量前缀去掉 正确实例: MI-1234567891234

android {
....
defaultConfig {
...
    manifestPlaceholders = [

        // 设置manifest.xml中的变量
        XIAOMI_APPKEY : "MI-您的应用对应的小米的APPKEY", // 小米平台注册的appkey,注意不要将前缀去掉 MI-appkey
        XIAOMI_APPID : "MI-您的应用对应的小米的APPID", // 小米平台注册的appid,注意不要将前缀去掉 MI-appid

    ]
}
...
}

<4>由于 MiPush 的 regid 只能在主进程获取,非主进程获取到的regid为空,所以极光的 PushReceiver应寄宿于应用主进程, 需要在AndroidManifest.xml中将 PushReceiver 的分离进程配置去掉。配置示例如下:

<receiver
      android:name="cn.jpush.android.service.PushReceiver"
      tools:node="replace"
      android:enabled="true">
         <intent-filter android:priority="1000">
             <action android:name="cn.jpush.android.intent.NOTIFICATION_RECEIVED_PROXY" />
             <!--Required  显示通知栏 -->
             <category android:name="${applicationId}" />
         </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>

这两个厂商比较有代表性,其他厂商就大同小异了

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,491评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,856评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,745评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,196评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,073评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,112评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,531评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,215评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,485评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,578评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,356评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,215评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,583评论 3 299
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,898评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,174评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,497评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,697评论 2 335

推荐阅读更多精彩内容