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版本不需要)

  
      ....
 
         
         
         
                 
                     
                 
             
    ....

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

  
      ....

         
         
         
         
               
                    
                    
               
           
    ....

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 的分离进程配置去掉。配置示例如下:


         
             
             
             
         
         
             
             
         
         
         
             
             

             
         
     

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

你可能感兴趣的:(android 接入极光推送(极光通道和厂商通道))