海外推送集成文档

海外推送集成文档

一、海外推送介绍

​ 由于海外设备应用消息推送存在较多难点和不确定性,比如海外网络环境复杂、消息渠道整合成本高等,导致消息到达率难以达到预期,所以个推推出海外辅助推送方案,整合各大手机厂商的海外厂商通道、FCM渠道,和个推自建的海外通道,以提高消息到达率。海外消息推送的逻辑,设备在线默认选择个推渠道进行消息下发,通道离线时选择辅助通道下发消息。

二、个推Google Play版Maven集成

前言

本⽂档介绍Android Studio提供的基于Maven的快速集成⽅案,配置简单、不容易出问题、后续更新维护⽅便,因此我们强烈推荐应⽤开发者根据本⽂档步骤进⾏个推集成。

请参考下载 Getui_SDK_Demo_AS_maven Demo⼯程

1. 创建个推应用

请参考 开发者中心使用说明 获取相应的 AppID 、 AppKey 、 AppSecret 信息。

2.添加个推相关配置

由⼿动集成切换到Maven,需删除原有集成配置再进⾏新集成。

2.1 添加Maven库地址

在项目根目录 build.gradle 文件的 allprojects.repositories 块中,添加个推 maven 库地址 maven { url "https://mvn.getui.com/nexus/content/repositories/releases/"},如下所示:

buildscript {
    repositories {
        mavenCentral()
        google()
    }
    dependencies {
        ......
    }
}

allprojects {
    repositories {
        mavenCentral()
        google()
        maven {
            url "https://mvn.getui.com/nexus/content/repositories/releases/"
        }
    }
}

2.2 配置依赖

配置 SDK 依赖及应用参数:在 app/build.gradle 文件的 dependencies 块中引用个推 SDK 依赖 implementation 'com.getui:gtsdk:${version}',此处的 ${version} 为对应的 SDK 版本号,并在android.defaultConfig 下添加 manifestPlaceholders,配置个推相关的应用参数, 如下所示:

    ......

    android {
        defaultConfig {
            manifestPlaceholders = [
                GETUI_APP_ID : "your AppID",
                GETUI_APP_KEY : "your AppKey ",
                GETUI_APP_SECRET : "your AppSecret",
            ]        
        }
      ......
    }

    dependencies {
        implementation 'com.getui:sdk-for-gj:4.4.3.7'  //个推SDK
    }  

请根据【步骤1】获取到的应⽤参数进⾏相应替换 APP_ID 的值

2.3 适配Android P

在Android 9.0以上默认不⽀持http通信,为保证SDK正常使⽤,maven库中已添加如下属性(注:如遇⼯程报错

找不到该属性,

将 app/build.gradle 中的compileSdkVersion改为23以上即可):

<application android:usesCleartextTraffic="true">

2.4 配置自定义推送服务

为了让推送服务在部分主流机型上更稳定运行,从 2.9.5.0 版本开始,个推支持第三方应用配置使用自定义 Service 来作为推送服务运行的载体。

  1. 在项目源码中添加一个继承自 com.igexin.sdk.PushService 的自定义 Service:

    package com.getui.demo.service;
    public class DemoPushService extends com.igexin.sdk.PushService {
    }
    
    
  2. AndroidManifest.xml 中添加上述自定义 Service,(使用 maven 集成,android:process 属性必须为 pushservice。手动集成方式也请保证与其他组件进程名一致,建议复制本文档的默认配置即可),如下:

    <!-- 请根据您当前自定义的 PushService 名称路径进行配置-->
     <service
         android:name="com.getui.demo.service.DemoPushService"
         android:exported="false"
         android:label="PushService"
         android:process=":pushservice"/>
    

2.5 设置通知图标

客户端必须配置 push_small.png 资源文件,若客户端无该文件,会导致通知栏消息无法展示。

  1. 设置通知栏及通知栏顶部图标:为了修改默认的通知图标以及通知栏顶部提示小图标,请务必在资源目录的 res/drawable-ldpi/、res/drawable-mdpi/、res/drawable-hdpi/、res/drawable-xhdpi/、res/drawable-xxhdpi/ 等各分辨率目录下,放置相应尺寸的文件名为 push.png 和 push_small.png 的图片(该图片内容为您应用自定义的图标文件),如图所示:

    Getui_SDK_Demo_AS_official/
       |- app/
       |    |- src/
       |       |- main/
       |         |- res/
       |             |- drawable-hdpi/
       |                 |- push.png
       |                 |- push_small.png
       |             |- drawable-ldpi/
       |                 |- push.png
       |                 |- push_small.png
       |             |- drawable-mdpi
       |                 |- push.png
       |                 |- push_small.png
       |             |- drawable-xhdpi
       |                 |- push.png
       |                 |- push_small.png
       |             |- drawable-xxhdpi
       |                 |- push.png
       |                 |- push_small.png
       | ......
    
    

    push_small.png 会展示在顶部状态栏和通知左上角位置,push_small 只能内置, 不能修改push.png 将会作为通知展示图标,请务必确认您放置的图标内容无误。建议的 push.png 图片尺寸和 push_small.png 图片尺寸分别如下:

    //push.png 图片尺寸
    ldpi:    48*48
    mdpi:    64*64
    hdpi:    96*96
    xhdpi:   128*128
    xxhdpi:  192*192
    
    //push_small.png 图片尺寸
    ldpi:    18*18
    mdpi:    24*24
    hdpi:    36*36
    xhdpi:   48*48
    xxhdpi:  72*72
    xxxhdpi:  96*96
    
    

    另外,push_small.png 设计规范有以下四个注意要点:1. 必须是带 Alpha 透明通道的 PNG 图片。 2.背景必须是透明的。 3.图形必须是白色。 4. 周围不宜留过多的 padding。

  2. 配置多套通知栏图标:如果您需要根据不同推送场景切换不同通知栏图标或者其他配置多套通知栏图标的场景,可以参考以下步骤:

    • 首先,在资源目录的 res/drawable-ldpi/、res/drawable-mdpi/、res/drawable-hdpi/、res/drawable-xhdpi/、res/drawable-xxhdpi/ 等各分辨率目录下放置相应的多套通知图标,例如 push1.pngpush2.png,如下:

      Getui_SDK_Demo_AS_official/
       |- app/
       |    |- src/
       |       |- main/
       |         |- res/
       |             |- drawable-hdpi/
       |                 |- push1.png
       |                 |- push2.png
       |                 |- push_small.png
       |             |- drawable-ldpi/
       |                 |- push1.png
       |                 |- push2.png
       |                 |- push_small.png
       |             |- drawable-mdpi
       |                 |- push1.png
       |                 |- push2.png
       |                 |- push_small.png
       |             |- drawable-xhdpi
       |                 |- push1.png
       |                 |- push2.png
       |                 |- push_small.png
       |             |- drawable-xxhdpi
       |                 |- push1.png
       |                 |- push2.png
       |                 |- push_small.png
       | ......
      
      
    • 然后,通过服务端推送 API,Style 样式 API 中的 setLogo 方法指定通知栏图标的名称,例如 style.setLogo("push1.png") 来指定要切换展示的对应名称的通知图标(仅切换通知栏图标),详见 服务端推送模版

3.其他配置

3.1资源精简配置

3.1.1 shrinkResources

如果您的工程启用了资源精简,即如果在 app/build.gradle 的 android.buildTypes.release 下配置了 shrinkResources true,为了避免个推 SDK 所需资源被错误精简导致功能异常,需要在项目资源目录 res/raw 中添加 keep.xml 文件,并在 keep.xml 文件中使用 tools:keep 定义哪些资源需要被保留(资源之间用“,”隔开),如 tools:keep="@drawable/push,@drawable/push_small,...,",此处 @drawable/push@drawable/push_small 通知图标的名称应为您当前放着于应用中的图标名称,如下:

<?xml version="1.0" encoding="utf-8"?>
<resources
    xmlns:tools="http://schemas.android.com/tools"
    tools:keep="......,
    @drawable/push,
    @drawable/push_small"/>
    <!-- 若您需要使用其他自定义推送图标,也需要在此处添加 -->

3.1.2 AndResGuard

如果您的工程使用了 AndResGuard 进行资源精简,为了避免个推 SDK 所需资源被错误精简导致功能异常,需要为个推添加白名单配置。gradle 集成 AndResGuard 的方式,需要您在 AndResGuard 的 whiteList 节点下添加如下代码:

andResGuard {
    ......
    whiteList = [
           ......
           // for getui
           "R.drawable.push",        
           "R.drawable.push_small"
           // 若您需要使用其他自定义推送图标,也需要在此处添加,此处的 R.drawable.push,R.drawable.push_small 应为您当前放置的推送图标。
    ]
    ......
}

命令行使用 AndResGuard 的方式,需要您在 config.xml 文件中的 节点下添加如下代码:

<issue id="whitelist" isactive="true">
    <path value="<your_package_name>.R.drawable.push"/>
    <path value="<your_package_name>.R.drawable.push_small"/>
    <!-- 若您需要使用其他自定义推送图标,也需要在此处添加,此处的 R.drawable.push,R.drawable.push_small 应为您当前放置的推送图标。 -->
</issue>

4.编写集成代码

4.1初始化 SDK

  • 调用个推初始化代码:com.igexin.sdk.PushManager.getInstance().initialize(Context context) 进行 SDK 的初始化。我们建议开发者在 Application.onCreate() 和主 Activity.onCreate() 方法中初始化个推 SDK。多次调用 SDK 初始化并无影响。
    为了保证 SDK 服务稳定,开发者需在 App《隐私政策》的 “与授权合作伙伴共享”条款中,将 个推的用户隐私政策 加入其中。并确保在 App 首次运行时通过明显方式提示终端用户阅读您的 App《隐私政策》,取得终端用户的合法授权后,再初始化 SDK ,详情可查看:个推合规指南
  • 另外,为了保证推送通知更好的触达用户,降低用户对于通知开关设置的难度,我们建议在应用代码中引导用户前往通知页面打开允许应用通知开关,具体实现代码可以参考 Demo 工程。

4.2自定义接收推送服务事件

  • 在项目源码中添加一个继承自 com.igexin.sdk.GTIntentService 的类,用于接收 CID、透传消息以及其他推送服务事件。请参考下列代码实现各个事件回调方法:

    package com.getui.demo;
    
    import android.content.Context;
    import android.util.Log;
    
    import com.igexin.sdk.GTIntentService;
    import com.igexin.sdk.message.GTCmdMessage;
    import com.igexin.sdk.message.GTNotificationMessage;
    import com.igexin.sdk.message.GTTransmitMessage;
    
    /**
    * 继承 GTIntentService 接收来自个推的消息,所有消息在主线程中回调,如果注册了该服务,则务必要在 AndroidManifest 中声明,否则无法接受消息
    */
    public class DemoIntentService extends GTIntentService {
    
      @Override
      public void onReceiveServicePid(Context context, int pid) {
      }
    
      //处理透传消息
      @Override
      public void onReceiveMessageData(Context context, GTTransmitMessage msg) {
          // 透传消息的处理,详看 SDK demo
    
      }
    
      // 接收 cid
      @Override
      public void onReceiveClientId(Context context, String clientid) {
          Log.e(TAG, "onReceiveClientId -> " + "clientid = " + clientid);
      }
    
      // cid 离线上线通知
      @Override
      public void onReceiveOnlineState(Context context, boolean online) {
      }
    
      // 各种事件处理回执
      @Override
      public void onReceiveCommandResult(Context context, GTCmdMessage cmdMessage) {
      }
    
      // 通知到达,只有个推通道下发的通知会回调此方法
      @Override
      public void onNotificationMessageArrived(Context context, GTNotificationMessage msg) {
      }
    
      // 通知点击,只有个推通道下发的通知会回调此方法
      @Override
      public void onNotificationMessageClicked(Context context, GTNotificationMessage msg) {   
      }
    }
    
  • 在 AndroidManifest.xml 中配置上述 IntentService 类,如下:

    <service
      android:name="com.getui.demo.service.DemoIntentService" />
    

5.验证推送

5.1查看调试日志信息

  • 在 Application 的 onCreate 中添加以下代码:

    com.igexin.sdk.PushManager.getInstance().setDebugLogger(this, new IUserLoggerInterface() {
      @Override
      public void log(String s) {
          Log.i("PUSH_LOG",s);
      }
    });
    
  • 连接手机或启动 Android 模拟器,编译运行你的工程,查看 logcat 信息。过滤 logcat 中的 PUSH_LOG 信息,如果看到 Login successed with cid = xxx 日志输出,则说明 SDK 初始化成功。

      [GT-PUSH] [PushManager]Start initializing sdk
      [GT-PUSH] [PushManager]start pushService = com.getui.demo.DemoPushServiceNew
      [GT-PUSH] [LOG-LogController] Sdk version = 3.0.1.0
      [GT-PUSH] [PushManager]call registerPushIntentService
      [GT-PUSH] onHandleIntent() = get sdk service pid 
      [GT-PUSH] ServiceManager start from initialize...
      [GT-PUSH] Start login appid = TI85ilD*******L89MFNV appkey = 1qNlp*******BP9COgYjA
      [GT-PUSH] Login successed with cid = e3f004e873f9a5d9e2e006c4a9ca2f5f
      [GT-PUSH] onHandleIntent() = received client id 
    

注意:com.igexin.sdk.PushManager.getInstance().setDebugLogger 接口仅限调试的时候使用,切勿发布到线上版本,重复调用仅以第一次为准。 可以任意顺序调用该接口与个推初始化接口,但建议紧邻着个推初始化接口调用该接口。 如果看到 Warning! the log cache is too long to show the full content,we suggest you call initialize and setDebugLogger in a short time interval. 这样的提示请调整调用时间间隔。

5.2测试推送功能

  • 登录 个推 ,点击相应应用创建推送,进入待测试应用的推送通知界面:
  • notification
  • 打开app在前台页面,输入此设备的cid进行推送测试。下拉通知栏,如果手机收到消息,那么恭喜您,个推 SDK 接入测试已经成功完成!

6. 常见问题

  • 如果无法获取cid,建议调用PushManager.getInstance().checkManifest()接口检查集成结果!此接口会自动检测运行环境且只在debug状态下时才会工作,线上release版本不会被执行。
  try {
      PushManager.getInstance().checkManifest(this);
  } catch (Exception e) {
      e.printStackTrace();
  }
  • 在logcat过滤GetuiPushException日志。若有集成问题会打印类似如下日志:
W/System.err:     at com.getui.demo.GetuiSdkDemoActivity.test(GetuiSdkDemoActivity.java:115)
W/System.err:     at com.getui.demo.GetuiSdkDemoActivity.onCreate(GetuiSdkDemoActivity.java:25)
  • 更多详细信息可参考个推 SDK 集成 Demo,资料包中的路径如下:
GETUI_ANDROID_SDK/
  | - Demo 工程/
  |    |- Getui_SDK_Demo_AS_maven/ (AndroidStudio 快速集成 Demo 工程)

更多问题详见 FAQ

三、厂商配置集成

3.1 华为

1. 创建华为应用

  • 参见华为官方文档 配置AppGallery Connect ,完成文档中的内容配置。

    登录 AppGallery Connect 网站,选择我的项目。打开刚才创建的项目,查看应用信息中相应的华为 AppID、华为 SecretKey。该信息在之后步骤中将会使用,如下图:

    huawei_appid

    • 在 “项目设置 > 增长” 中选择“推送服务”,点击“立即开通”,以此来开启华为侧推送服务状态。

    hw_sha256

  • 在 “项目设置 > 常规” 中填写“ SHA256证书指纹 ”,点击右侧对勾进行保存;若不知道具体值,请参考 SHA256指纹证书获取

    hw_sha256

  • 在 “项目设置 > 推送服务> 配置”中开通项目回执状态,配置个推侧的回调地址以及HTTPS证书。如下

    s01

    • 回执名称可自定义
    • 回调地址(杭州机房)
    https://thirdrcp-hz.getui.com/hw
    
    • 点击“提交”,提示“成功”则表示配置成功

2. 应用配置

  • 在个推开发者中心中填写相关厂商信息:
    huawei1

3.添加辅助 SDK 及相关配置

3.1 添加 Maven 库地址

在以项目名为命名的顶层 build.gradle 文件的 allprojects.repositories 中,添加个推 maven 库地址 https://mvn.getui.com/nexus/content/repositories/releases/ 如下所示:

allprojects {
    repositories {
        mavenCentral()
        //添加 Maven URL 地址
        maven {
            url "https://mvn.getui.com/nexus/content/repositories/releases/"
        }
    }
}
3.2 配置相关依赖

app/build.gradle 文件中的 dependencies 块中引用厂商 SDK 依赖库 ,当前为最新版本,历史版本详见 厂商更新日志。其中ups为个推与手机厂商合作通道,目前支持坚果,索尼,海信手机。如下所示:

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])

    // 根据所需厂商选择集成
    implementation 'com.getui.opt:hwp:3.1.1'   // 华为

}
3.3 配置应用参数

app/build.gradle 文件中的 android.defaultConfig 下添加 manifestPlaceholders,配置厂商相关的应用参数,如下 manifestPlaceholders 中的内容所示,ups无需配置对应的厂商ID,个推已经默认作出处理:

android {
    defaultConfig {
        manifestPlaceholders = [
                // 华为 相关应用参数
                HUAWEI_APP_ID  : "",


        ]
    }
}

4.华为配置

集成华为通道还需以下步骤。若无需集成华为厂商推送,可直接跳过此节

4.1 添加应用的 AppGallery Connect 配置文件
  1. 登录 AppGallery Connect,选择“我的项目”,找到应用所在的产品,点击应用名称。

  2. 选择“项目设置 > 常规”,在“应用”栏下的“agconnect-services.json”下载配置文件。

  3. 将 agconnect-services.json 文件拷贝到应用级根目录下。如下:

    Getui_SDK_Demo_AS_manufacture/
     |- app/ (项目主模块)
     |  ......
     |    |- agconnect-services.json 
     |- gradle/
     |- build.gradle (顶层 gradle 文件)
     |- settings.gradle
     | ......
    

    华为离线推送验证需要客户端使用签名包,否则会校验失败

4.2 配置相应依赖
  1. 在以项目名为命名的顶层 build.gradle 文件的 buildscript.repositoriesallprojects.repositories 中,添加 HMS SDK 的 maven 地址。在 buildscript.dependencies 添加 classpath 'com.huawei.agconnect:agcp:${version}' 如下所示:

    buildscript {
       repositories {
           mavenCentral()
           google()
           maven {url 'https://developer.huawei.com/repo/'}
       }
       dependencies {
           ......
           classpath 'com.huawei.agconnect:agcp:1.6.0.300'
       }
    }
    
    allprojects {
       repositories {
           ......
           maven {url 'https://developer.huawei.com/repo/'}
       }
    }
    
  2. 在模块级别 app/build.gradle 中文件头配置 apply plugin: 'com.huawei.agconnect' 以及在 dependencies 块配置 HMS Push 依赖 implementation 'com.huawei.hms:push:${version}',如下:

    apply plugin: 'com.android.application'
    apply plugin: 'com.huawei.agconnect'
    android { 
       ......
    }
    dependencies { 
       ......
       implementation 'com.huawei.hms:push:6.7.0.300'
    }
    
  3. 配置签名信息:将应用签名文件拷贝到工程 app 目录下,在 app/build.gradle 文件中配置签名。如下(具体请根据您当前项目的配置修改):

    signingConfigs {
        config {
            keyAlias 'pushdemo'
            keyPassword '123456789'
            storeFile file('pushdemo.jks')
            storePassword '123456789'
        }
    }
    buildTypes {
        debug {
            signingConfig signingConfigs.config
        }
        release {
            signingConfig signingConfigs.config
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
    }
    

3.2 荣耀

1. 创建荣耀应用

  • 登录 荣耀开放平台 申请开发者帐号:

    img_manufacture_honor1

  • 点击开放能力->推送服务

    img_manufacture_honor2

  • 进入开放能力页面->选择推送服务

    img_manufacture_honor3

  • 点击申请推送服务

    img_manufacture_honor4

  • 选择移动应用

    img_manufacture_honor5

  • 填写应用名称应用包名SHA256证书指纹

    img_manufacture_honor6

证书指纹用于校验应用的真实性。如使用荣耀开放服务能力等,必须配置证书指纹。使用以下命令获取指纹:
Keytool-list-v-keystore mystore.keystore

  • 勾选我已经阅读并同意《荣耀推送服务使用协议》我已经阅读并同意《数据处理附录》,点击提交按钮:

    img_manufacture_honor7

  • 在推送服务列表,找到刚创建的应用,点击查看按钮:

    img_manufacture_honor8

  • 查看应用信息,获取荣耀 APP ID、荣耀 APP Secret、荣耀 Client ID、荣耀 Client Secret:

    img_manufacture_honor9

  • 消息报表到达回执配置:选择 “开放服务 > 推送服务 > 应用回执 > 新增回执” ,即可进行配置

荣耀回执1

荣耀回执2

  • 回执名称可自定义
  • 荣耀回调地址(杭州机房)
https://thirdrcp-hz.getui.com/ho
  • 点击“提交”,提示“成功”则表示配置成功

2. 应用配置

  • 在个推开发者中心中填写相关厂商信息:

    img_manufacture_honor10

3. 添加辅助 SDK 及相关配置

开发环境:

  1. 环境信息
    JDK 1.8及以上版本
    Android Studio 3.X及以上版本

    minSdkVersion 19及以上
    targetSdkVersion 29(推荐)
    compileSdkVersion 30(推荐)
    Gradle 4.6及以上(推荐)
    
  2. 支持的设备类型
    国内Magic UI4.0及以上
    海外Magic UI4.2及以上

3.1 添加 Maven 库地址

在以项目名为命名的顶层 build.gradle 文件,添加 荣耀 SDK 的 maven 地址。

repositories {
    maven {
         url 'https://developer.hihonor.com/repo/' 
    }
}
3.2 配置相关依赖

配置签名信息:将应用签名文件拷贝到工程 app 目录下,在 app/build.gradle 文件中配置签名,并添加荣耀 SDK。如下(具体请根据您当前项目的配置修改)

android {
    signingConfigs {
         config {
             keyAlias 'pushdemo'
             keyPassword '123456789'
             storeFile file('pushdemo.jks')
             storePassword '123456789'
         }
     }
     buildTypes {
         debug {
             signingConfig signingConfigs.config
         }
         release {
             signingConfig signingConfigs.config
             minifyEnabled false
             proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
         }
     }
     ...
}

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])

    // 根据所需厂商选择集成
    implementation 'com.getui.opt:honor:3.6.0' // 荣耀插件
    implementation 'com.hihonor.mcs:push:7.0.61.303'// 荣耀SDK
}
3.3 配置应用参数

app/build.gradle 文件中的 android.defaultConfig 下添加 manifestPlaceholders,配置厂商相关的应用参数,如下 manifestPlaceholders 中的内容所示,ups无需配置对应的厂商ID,个推已经默认作出处理:

android {
    defaultConfig {
        manifestPlaceholders = [
                // 华为 相关应用参数
                HONOR_APP_ID  : ""
        ]
    }
}

3.3 小米

小米海外推送将于2024年4月2日12:00起关闭。届时,您将不能再使用小米海外推送服务。
小米官方公告:https://dev.mi.com/distribute/doc/details?pId=1777

1. 创建小米应用

  • 登录 小米开放平台 申请开发者帐号:

    img_manufacture_xiaomi1

  • 进入海外推送运营平台

    image-20220706150631675

  • 选择Create app创建应用:

    image-20220706150708003

    image-20220706150926440

  • 填写应用名称应用包名创建:

  • 选择Enable push进入勾选同意接受小米推送的接入合作协议复选框,点击Turn on 按钮:

    image-20220706151344078

  • 查看应用信息,获取小米 AppID、小米 AppKey、小米 AppSecret:

2. 应用配置

  • 在个推开发者中心中填写相关厂商信息:

    xm10

3 添加辅助 SDK 及相关配置

3.1 添加 Maven 库地址

在以项目名为命名的顶层 build.gradle 文件的 allprojects.repositories 中,添加个推 maven 库地址 https://mvn.getui.com/nexus/content/repositories/releases/ 如下所示:

allprojects {
    repositories {
        mavenCentral()
        //添加 Maven URL 地址
        maven {
            url "https://mvn.getui.com/nexus/content/repositories/releases/"
        }
    }
}
3.2 配置相关依赖

app/build.gradle 文件中的 dependencies 块中引用厂商 SDK 依赖库 ,当前为最新版本,历史版本详见 厂商更新日志。其中ups为个推与手机厂商合作通道,目前支持坚果,索尼,海信手机。如下所示:

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])

    // 根据所需厂商选择集成
    implementation 'com.getui.opt:xmp-oversea:3.5.0'   // 小米

}
3.3 配置应用参数

app/build.gradle 文件中的 android.defaultConfig 下添加 manifestPlaceholders,配置厂商相关的应用参数,如下 manifestPlaceholders 中的内容所示,ups无需配置对应的厂商ID,个推已经默认作出处理:

android {
    defaultConfig {
        manifestPlaceholders = [

                // 小米相关应用参数
                XIAOMI_APP_ID  : "",
                XIAOMI_APP_KEY : "",

        ]
    }
}

3.4 OPPO

1. 创建OPPO应用

  • 登录 OPPO开放平台 选择国际站:

    img_oppo_login

  • 进入海外推送运营平台,选择登录/注册:

    image-oppo1

  • 选择Push,然后创建应用:

    image-oppo2

    image-oppo3

  • 填写应用名称应用包名创建:

    按照OPPO发布应用步骤一步步进行,然后提交,等待应用审核通过;发布成功后,点击Enabled Services选择需要进行开通的应用

  • 由于OPPO完整推送应用信息只能通过OPPO国内网站查询,所以需要同时在国内OPPO开发者平台开通,开通成功后,获取 OPPO App ID、OPPO App Key、OPPO App Secret、OPPO Master Secret:

2. 应用配置

  • 在个推开发者中心中填写相关厂商信息:

    xm10

3 添加辅助 SDK 及相关配置

3.1 添加 Maven 库地址

在以项目名为命名的顶层 build.gradle 文件的 allprojects.repositories 中,添加个推 maven 库地址 https://mvn.getui.com/nexus/content/repositories/releases/ 如下所示:

allprojects {
    repositories {
        mavenCentral()
        //添加 Maven URL 地址
        maven {
            url "https://mvn.getui.com/nexus/content/repositories/releases/"
        }
    }
}
3.2 配置相关依赖
  1. app/build.gradle 文件中的 dependencies 块中引用厂商 SDK 依赖库 ,当前为最新版本,历史版本详见 厂商更新日志。其中ups为个推与手机厂商合作通道,目前支持坚果,索尼,海信手机。如下所示:
dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])

    // 根据所需厂商选择集成
    implementation 'com.assist-v3:oppo:3.3.0'  // oppo

}
  1. 在模块级别 app/build.gradledependencies 配置中务必添加以下依赖,如下:

    dependencies { 
        ......
        //以下依赖都需要添加
        implementation 'com.google.code.gson:gson:2.6.2'
        implementation 'commons-codec:commons-codec:1.6'
        implementation 'com.android.support:support-annotations:28.0.0'
    }
    
3.3 配置应用参数

app/build.gradle 文件中的 android.defaultConfig 下添加 manifestPlaceholders,配置厂商相关的应用参数,如下 manifestPlaceholders 中的内容所示,ups无需配置对应的厂商ID,个推已经默认作出处理:

android {
    defaultConfig {
        manifestPlaceholders = [

                // OPPO 相关应用参数   
                OPPO_APP_KEY   : "",
                OPPO_APP_SECRET: "",

        ]
    }
}

3.5 FCM

1. 概述

解决海外用户推送不稳定问题,提升推送到达率。

2. 功能名字

2.1 应用场景

由于在海外网络环境下,部分网络在连接国内个推服务时,可能出现不稳定的情况,基于此种场景,客户可以接入 FCM 辅助通道,当在个推服务由于某种原因离线的情况下,通过 FCM 通道下发消息,提升推送到达率。

3. 创建 Firebase 应用

进入Firebase官网创建项目,获取 google-services.json 文件及 Server key

3.1 登录 google 账号,如果没有账号请先注册

image-20221110140637454

3.2 登录后点击右上角的“Go to console”

image-20221110140651513

3.3 打开项目列表页面,点击 “Add project” 创建项目

image-20221110140707231

3.4 输入项目名称(根据自己应用取名),点击 “Continue”

image-20221110140716288

3.5 确认是否需要使用 Google Analytics 服务(根据自己需要开启或关闭),点击 “Continue”

image-20221110140728425

3.6 确认后创建项目,点击 “Continue”

image-20221110140737717
进入项目详情页面,点击 “Android” 图标添加 Android 应用
image-20221110140750213

3.7 输入 Android 应用信息(包名、昵称、证书SHA-1),点击 “Register App”

image-20221110140801045

3.8 注册 Android 应用后下载配置文件 “google-services.json”,保存 google-services.json 文件后面需要使用

image-20221110140818233

3.9 此步骤中的操作云端打包机已经处理,忽略提示信息,继续点击“Next”,进入下一步。完成注册 Android 应用,点击 “Continue to console” 回到项目详情页面

image-20221110140828251

3.10 点击 “Project settings” ,进入项目设置页面

image-20221110140836042

3.11 旧版 Cloud Messaging API开启,获取Server Key(如果您现在使用旧版 HTTP 或 XMPP API(于 2023 年 6 月 20 日弃用),则必须在 2024 年 6 月 20 日之前迁移到最新的 Firebase Cloud Messaging API (HTTP v1))

img

跳转到Api管理页面启动Cloud Messaging API
img

启动Cloud Messaging API后即可得到Server key
img

3.12 新版Firebase Cloud Messaging API (V1)

img

选择配置语言,点击生成新的私钥
img

生成密钥
img

生成密钥后,会下载到本地一个json文件
img

4. 应用配置

在个推开发者中心中填写相关厂商信息:

  • 旧版Cloud Messaging API参数填写
    image-20221110140906210

  • 新版Firebase Cloud Messaging API (V1)参数填写,点击上传文件,选择您在FCM->2.创建FCM应用->12.新版Firebase Cloud Messaging API (V1)下载的密钥json文件
    img

5. 添加辅助 SDK 及相关配置

5.1 添加工程的顶层 gradle 配置

在项目根目录 build.gradle 文件的 allprojects.repositories 块中,添加个推 maven 库地址 maven { url "https://mvn.getui.com/nexus/content/repositories/releases/"},在buildscript.dependencies添加FCM的dependencies {classpath 'com.google.gms:google-services:4.2.0'},如下所示:

 buildscript {
    repositories {
        mavenCentral()
        google()
    }
    dependencies {
        classpath 'com.google.gms:google-services:4.2.0'
    }
}

allprojects {
    repositories {
        mavenCentral()
        google()
        maven {
            url "https://mvn.getui.com/nexus/content/repositories/releases/"
        }
    }
}
5.2 添加SDK依赖
  • 添加SDK 依赖:在 app/build.gradle 文件的 dependencies 块中引用个推 SDK 依赖
    implementation 'com.getui.opt:fcm:${version}'
    implementation 'com.google.firebase:firebase-messaging:23.0.0'
    implementation 'com.google.firebase:firebase-analytics:20.1.0',
    此处的 ${version} 为对应的 SDK 版本号,如下所示:

    dependencies {
        implementation 'com.getui.opt:fcm:3.1.2'
        implementation 'com.google.firebase:firebase-messaging:23.0.0'
        implementation 'com.google.firebase:firebase-analytics:20.1.0’
    }  
    
  • 在文件末尾添加 apply plugin:'com.google.gms.google-services',如下所示:

    apply plugin: 'com.google.gms.google-services'
    
  • 配置签名信息:将应用签名文件拷贝到工程 app 目录下,在 app/build.gradle 文件中配置签名。如下(具体请根据您当前项目的配置修改):

    signingConfigs {
        config {
            keyAlias 'pushdemo'
            keyPassword '123456789'
            storeFile file('pushdemo.jks')
            storePassword '123456789'
        }
    }
    buildTypes {
        debug {
            signingConfig signingConfigs.config
        }
        release {
            signingConfig signingConfigs.config
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
    }
    

6. 集成验证

初始化个推 SDK,打开 logcat 查看信息,Verbose 级日志,tag 过滤内容“Assist_”,Filter 选择“No Filters”。首次初始化成功打印 token 信息则表示集成成功:
image-20221110140930030

使用FCM时手机端需安装Google移动服务(GMS),并且可以正常连接Google服务(国内网络需要开代理)

开发者中心 SDK 下载

文档中心搜索

技术
咨询

微信扫一扫

随时联系技术支持

在线
咨询