魅族辅助推送集成

魅族辅助推送集成

目录
    前言
    1. 准备阶段
        1.1 创建魅族应用
        1.2 开通权限和应用配置
            1.2.1 基础配置
            1.2.2 高级配置
    2. 添加辅助 SDK 及相关配置
            2.1 Maven 自动导入
                  2.1.1 添加 Maven 库地址
                  2.1.2 配置相关依赖
            2.2 手动导入
                2.2.1 导入辅助 SDK
                2.2.2 配置辅助 SDK 相关参数
            2.3 资源精简配置
    3. Proguard 混淆配置


前言


注:魅族的状态栏小图标资源 mz_push_notification_small_icon 必须导入,否则无法正常显示通知

  • 本文档介绍 Android Studio 开发环境下手动方式导入 SDK 资源进行多厂商推送 SDK 集成的步骤,配置相对复杂,需要仔细阅读文档和 Demo 工程。

  • 辅助推送:个推推送针对魅族设备管控较严的情况特意接入魅族推送作为辅助通道以提高在魅族设备上的到达率。个推推送优先选择个推通道进行消息下发,只有在个推通道断连时选择辅助通道下发消息。

  • 辅助推送启用条件:魅族 rom 且魅族 rom 版本大于等于 5.x

  • 功能接口对辅助 SDK 的差异处理

    | API 接口 | 魅族辅助 SDK |
    | ------| ------ |
    | stopService(Context context) | 不会停止魅族辅助 SDK |
    | setSilentTime(Context context,int beginHour,int duration) | 不会静默魅族辅助 SDK|

  • 请参考 Getui_SDK_Demo_AS_manufacture Demo 工程

1. 准备阶段

说明:该阶段主要介绍了如何创建魅族应用及开通相关的应用权限配置,如果您已经完成该阶段,可以直接进入下一阶段。

1.1 创建魅族应用

  • 登录 魅族开放平台 申请开发者帐号:

    img_manufacture_meizu1

  • 登录 魅族推送平台 ,选择新建应用

    img_manufacture_meizu2

  • 填写应用名称应用包名,上传应用图标后创建应用:

    img_manufacture_meizu3

  • 打开新创建的应用:

    img_manufacture_meizu4

  • 配置管理中查看相应的魅族 AppID、魅族 AppKey、魅族 AppSecret:

    img_manufacture_meizu5

1.2. 开通权限和应用配置

1.2.1 基础配置

  • 联系个推客服开通多厂商推送功能
  • 在开发者中心中填写魅族 AppID、魅族 AppKey、魅族 AppSecret:

as_configuration2.png

1.2.2 高级配置

  • 如果当前用户是集成个推客户端 SDK 并且配置了静默时间的用户,在基础配置信息填写完毕的同时需要配置高级设置
  • 该高级设置是为了一些多厂商通道不支持客户端 SDK 静默而做的服务端配置

img_manufacture_huawei9

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


注:该步骤有俩种实现方式,可以使用 Maven 库自动导入方式(推荐)或者手动导入方式,俩者选一即可。

2.1 Maven 自动导入

2.1.1 添加 Maven 库地址

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

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

allprojects {
    repositories {
        jcenter()
        //添加 Maven URL 地址
        maven {
            url "http://mvn.gt.igexin.com/nexus/content/repositories/releases/"
        }
    }
}

2.1.2 配置相关依赖

该步骤需要在模块级别 app/build.gradle 中配置对应的 SDK 依赖库以及魅族应用参数,主要分为俩步骤:

  1. 配置对应的 SDK 依赖库:在 app/build.gradle文件中的 dependencies 块中引用个推辅助 SDK 依赖库 com.getui:mzp:${version} ,此处的 ${version} 对应您当前获取到相应的 SDK 版本号,如下所示:

    ......
    
    android {
        ......
    }
    
    ......
    
    dependencies {
        implementation fileTree(dir: 'libs', include: ['*.jar'])
        implementation 'com.getui:mzp:${version}'  //请将此处的 ${version} 替换成您当前相应的 SDK 版本号,如 1.0.7
        ......
    }
    
  2. 配置魅族应用参数:在 app/build.gradle 文件中的 android.defaultConfig 下添加 manifestPlaceholders,配置魅族相关的应用参数(参见【步骤 1】),如下 manifestPlaceholders 中的内容所示:

    ......
    
    android {
    
        defaultConfig {
            ......
    
            manifestPlaceholders = [
    
                    //魅族相关应用参数,请填写您的 MEIZU_APP_ID,MEIZU_APP_KEY 值  
                    MEIZU_APP_ID    : "",
                       MEIZU_APP_KEY   : ""
    
                    ......
    
            ]
            ......
        }
    
    }
    
    ......
    
    

    请根据【步骤 1】获取到的应用参数填写相应 MEIZU_APP_IDMEIZU_APP_KEY 的值,最终的 app/build.gradle 的大致结构如下所示:

    ......
    
    android {
    
        defaultConfig {
            ......
    
            manifestPlaceholders = [
                    //个推应用参数,请填写您获取到的应用参数值
                    GETUI_APP_ID : "", 
                    GETUI_APP_KEY : "",
                    GETUI_APP_SECRET : "",
    
                    //魅族相关应用参数,请填写您的 MEIZU_APP_ID,MEIZU_APP_KEY 值   
                    MEIZU_APP_ID    : "",
                       MEIZU_APP_KEY   : ""
    
                    ......
    
            ]
    
            ndk {
                abiFilters "armeabi", "armeabi-v7a", "x86_64", "x86"
            }
            ......
        }
    
        ......
    
    }
    
    dependencies {
        implementation fileTree(dir: 'libs', include: ['*.jar'])
        implementation 'com.getui:mzp:${version}'  //请将此处的 ${version} 替换成您当前相应的 SDK 版本号,如 1.0.7
        ......
    }
    
    

2.2 手动导入

手动导入主要分为导入辅助 SDK 配置辅助 SDK 相关参数俩步骤,详细步骤见下文:

2.2.1 导入辅助 SDK

  1. 下载辅助 SDK 资料包,辅助 SDK 资料包结构如下:

    GETUI_ANDROID_MZ_SUPPORT/
      |- readme.txt (SDK 资料包说明)
      |- 接入文档/ (Android SDK 相关集成文档 PDF 版本)
      |- 资源文件/
      |    |- GetuiSDK-support-MZP-<version>.jar (其中<version> 代表对应的版本号)
      |    |- res/
      |    |    |- layout/
      |    |            |- push_expandable_big_image_notification.xml
      |    |            |- push_expandable_big_text_notification.xml
      |    |            |- push_pure_pic_notification.xml
      |    |    |- drawable-xhdpi/
      |    |         |- mz_push_notification_small_icon.png
      |    |    |- drawable-xxhdpi/
      |    |         |- mz_push_notification_small_icon.png
      |    |    |- drawable-xxxhdpi/
      |    |         |- mz_push_notification_small_icon.png
      |    |    |- drawable-nodpi/
      |    |         |- mz_push_notification_small_icon.png
      | - Demo 工程/
      |    |- Getui_SDK_Demo_AS_manufacture/ (AndroidStudio 多厂商推送集成 Demo 工程)
    
  2. 导入辅助 SDK

    以下集成步骤假设项目主模块名为 app。

    将 SDK 资料包 GETUI_ANDROID_MZ_SUPPORT/资源文件 目录下的 GetuiSDK-support-MZP-<version>.jar 复制到 app 模块目录下的 libs 文件夹中,结构如下所示:

    Getui_SDK_Demo_AS_manufacture/
      |- app/
      |    |- libs/
      |       |- GetuiSDK-support-MZP-<version>.jar
      | ......
    

    打开 app/build.gradle,在 dependencies 块中添加 implementation fileTree(dir: 'libs', include: ['*.jar']) 引用相应的 jar 包:

     ......
    
    android {
    
        ......
    
    }
    
    dependencies {
        // 该行配置将会编译 libs 目录下的所有 jar 文件
        implementation fileTree(dir: 'libs', include: ['*.jar'])
        ......
    }
    

    将 SDK 资料包 GETUI_ANDROID_MZ_SUPPORT/资源文件/res/drawable-各个分辨率GETUI_ANDROID_MZ_SUPPORT/资源文件/res/layout 下的文件复制到 app 模块目录下的对应位置。


    注意GETUI_ANDROID_MZ_SUPPORT/资源文件/res/drawable-各个分辨率下的图片必须复制到对应位置,否则会出现魅族手机状态栏图标异常

2.2.2 配置辅助 SDK 相关参数

说明:配置辅助 SDK 参数主要分为配置app/build.gradle 文件中应用参数,配置 Manifest 中组件,配置 Manifest 中权限三步骤,具体如下:

  1. 配置应用参数

    app/build.gradle 文件中的 android.defaultConfig 块中添加 manifestPlaceholders 块,配置推送辅助 SDK 相关的应用参数(参见【步骤 1】),如下图所示:

    ......
    
    android {
    
        defaultConfig {
            ......
    
            manifestPlaceholders = [
    
                    //魅族相关应用参数,请填写您的 MEIZU_APP_ID,MEIZU_APP_KEY 值   
                    MEIZU_APP_ID    : "",
                       MEIZU_APP_KEY   : ""
    
                    ......
    
            ]
            ......
        }
    
    }
    
    ......
    
    

    请根据【步骤 1】获取到的魅族应用参数填写相应 MEIZU_APP_IDMEIZU_APP_KEY 的值,最终的 app/build.gradle 文件的大致结构如下:

    ......
    
    android {
    
        defaultConfig {
            ......
    
            manifestPlaceholders = [
                    //个推应用参数,请填写您获取到的应用参数值
                    GETUI_APP_ID : "", 
                    GETUI_APP_KEY : "",
                    GETUI_APP_SECRET : "",
    
                    //魅族相关应用参数,请填写您的 MEIZU_APP_ID,MEIZU_APP_KEY 值   
                    MEIZU_APP_ID    : "",
                       MEIZU_APP_KEY   : ""
    
                    ......
    
            ]
    
            ndk {
                abiFilters "armeabi", "armeabi-v7a", "x86_64", "x86"
            }
            ......
        }
    
        ......
    
    }
    
    dependencies {
        // 该行配置将会编译 libs 目录下的所有 jar 文件
        implementation fileTree(dir: 'libs', include: ['*.jar'])
        ......
    }
    
    
  2. 配置 Manifest 中组件

    AndroidManifest.xml 中需要正确配置个推 SDK 所需的 Service、Activity、以及 BroadcastReceiver 等组件。请在 <application> 标签内增加以下组件配置(由于使用了 manifestPlaceholders 来做参数替换,因此以下配置无需手工修改,直接复制粘贴即可):

    <!-- 魅族辅助 SDK -->
    <meta-data
        android:name="MEIZUPUSH_APPID"
        android:value="MZ_${MEIZU_APP_ID}" />
    <meta-data
        android:name="MEIZUPUSH_APPKEY"
        android:value="MZ_${MEIZU_APP_KEY}" />
    
    <service
        android:name="com.meizu.cloud.pushsdk.NotificationService"
        android:exported="true"
          android:process=":pushservice" />
    
    <receiver
      android:name="com.meizu.cloud.pushsdk.SystemReceiver"
      android:process=":pushservice">
        <intent-filter>
            <action android:name="com.meizu.cloud.pushservice.action.PUSH_SERVICE_START" />
            <category android:name="android.intent.category.DEFAULT" />
        </intent-filter>
    </receiver>
    
    <receiver
        android:name="com.igexin.sdk.FlymePushReceiver"
        android:process=":pushservice">
        <intent-filter>
            <action android:name="com.meizu.flyme.push.intent.MESSAGE" />
           <action android:name="com.meizu.flyme.push.intent.REGISTER.FEEDBACK" />
           <action android:name="com.meizu.flyme.push.intent.UNREGISTER.FEEDBACK" />
           <action android:name="com.meizu.c2dm.intent.REGISTRATION" />
           <action android:name="com.meizu.c2dm.intent.RECEIVE" />
            <category android:name="${applicationId}" />
          </intent-filter>
    </receiver>
    
  3. 添加权限声明

    请在<manifest>根标签下加入辅助 SDK 所必需的权限,配置如下(由于使用了manifestPlaceholders来做参数替换,因此以下配置无需手工修改,直接复制粘贴即可):

    <!-- 魅族辅助 SDK -->
    <permission
        android:name="${applicationId}.push.permission.MESSAGE"
        android:protectionLevel="signature" />
    <permission
        android:name="${applicationId}.permission.C2D_MESSAGE"
        android:protectionLevel="signature" />
    
    <uses-permission android:name="com.meizu.flyme.push.permission.RECEIVE" />
    <uses-permission android:name="com.meizu.c2dm.permission.RECEIVE" />
    <uses-permission android:name="${applicationId}.push.permission.MESSAGE" />
    <uses-permission android:name="${applicationId}.permission.C2D_MESSAGE" />
    

2.3 资源精简配置

如果您的工程启用了资源精简,即如果在app/build.gradleandroid.buildTypes.release下配置了shrinkResources true,为了避免个推 SDK 所需资源被错误精简导致功能异常,需要在项目资源目录res/raw中添加keep.xml文件(见在 SDK 资料包中GETUI_ANDROID_SDK/资源文件/raw 目录下的 keep.xml 示例文件),内容如下:

<?xml version="1.0" encoding="utf-8"?>
<resources
    xmlns:tools="http://schemas.android.com/tools"
    tools:keep="...,
    @layout/push_expandable_big_image_notification,
    @layout/push_expandable_big_text_notification,
    @layout/push_pure_pic_notification"/>

3. Proguard 混淆配置

如果您的工程启用了 Proguard 混淆,即如果在app/build.gradleandroid.buildTypes.release下配置了minifyEnabled true,为了避免辅助 SDK 被错误混淆导致功能异常,需要在app/proguard-rules.pro混淆配置文件中添加如下配置:

-keep class com.meizu.** { *; }
-dontwarn com.meizu.**

文档中心搜索

技术
咨询

微信扫一扫

随时联系技术支持

在线
咨询