View on GitHub

UpsDemo

魅族统一推送平台Demo-AndroidStudio

本文档旨在说明如果快速的接入集成推送SDK,快速实现小米,华为,魅族的推送接入,有关详细的设计文档参考集成推送设计说明文档

依赖库配置

中央仓库自动集成

NOTE: 这里配置中央仓库主要下载魅族推送相关sdk,以及华为的推送sdk

repositories {
        //魅族PushSDK仓库地址
        jcenter()
        // 华为的库的仓库地址
        maven {
            url 'http://developer.huawei.com/repo/'
        }

    }
}    

本地包导入

NOTE: 由于小米,OPPO不支持远程仓库依赖,所以需要将小米,OPPO的推送的PushSDK Jar手动导入到应用的lib目录下,否则可能出现无法在OPPO等机型订阅等问题

build.gradle 相关配置

android {
    ......
    defaultConfig {
        applicationId "com.xxx.xxx" //集成推送上注册的包名.各个平台注册的包名最好保持一致
        ......

        ndk {
           //目前支持配置x86,armeabi
           abiFilters 'x86','armeabi'
        }

       manifestPlaceholders = [    XIAOMI_APP_ID: "", //如需本地调试,请替换真实信息,否则填空,不要随意填写
                                   XIAOMI_APP_KEY: "",//如需本地调试,请替换真实信息,否则填空,不要随意填
                                   MEIZU_APP_ID: "",//如需本地调试,请替换真实信息,否则填空,不要随意填
                                   MEIZU_APP_KEY: "",//如需本地调试,请替换真实信息,否则填空,不要随意填
                                   HUAWEI_APP_ID: "",//必填
                                   OPPO_APP_ID: "",//如需本地调试,请替换真实信息,否则填空,不要随意填
                                   OPPO_APP_KEY: "",//如需本地调试,请替换真实信息,否则填空,不要随意填
                                   OPPO_APP_SECRET: "",//如需本地调试,请替换真实信息,否则填空,不要随意填
                                   PACKAGE_NAME: appPackageName,//必填
                              ]    
        ......
    }
    ......
}

dependencies {
    ......

    compile 'com.meizu.flyme.internet:push-ups:4.0.0' //配置集成sdk
    ......
}


一 AndroidManifest配置

由于三方SDK的权限,组件全部配置在ups-push-sdk的aar的AndroidManifest中,因此开发者只需关注各个平台与应用相关的配置即可,更加详细的配置参考Ups_PushDemo

实现UpsPushReceiver

应用只需要继承UpsPushMessageReceiver,覆盖其中的方法即可,如下

public class UpsReceiver extends UpsPushMessageReceiver{
    @Override
    public void onThroughMessage(Context context, UpsPushMessage upsPushMessage) {
    
    }

    @Override
    public void onNotificationClicked(Context context, UpsPushMessage upsPushMessage) {
    
    }

    @Override
    public void onNotificationArrived(Context context, UpsPushMessage upsPushMessage) {
    
    }

    @Override
    public void onNotificationDeleted(Context context, UpsPushMessage upsPushMessage) {
    
    }

    @Override
    public void onUpsCommandResult(Context context, UpsCommandMessage upsCommandMessage) {
        
    }

并在AndroidManifest.xml中配置此组件,此组件的实际路径以此类的实际路径为准,下面包名只是示例说明

<!-- 统一推送配置 -->
<!-- the following 4 ${PACKAGE_NAME} should be changed to your actual package name where the implemented UpsReceiver belong to -->
   <receiver android:name="${PACKAGE_NAME}.UpsReceiver">
     <intent-filter>
       <!-- 接收push消息 -->
       <action android:name="com.meizu.ups.push.intent.MESSAGE" />
     </intent-filter>
   </receiver>

二 统一推送平台配置

2.1 应用信息平台设置

推荐到魅族统一推送平台应用配置-> 添加多渠道添加各个平台的AppId,AppKey,AppSecret,如下图所示:

image

2.2 应用信息本地设置测试[可选]

NOTE: 全部在manifestPlaceholders指定

应用也可以在AndroidManifest配置AppID,AppKey信息方便本地测试,ups-pushsdk会优先读取本地AndroidManifest中的配置信息

NOTE: 小米的APP_ID,APP_KEY需要进行字符转义,不然无法正确读出,例如小米的appid2882303761517631454需要如下配置 android:value="\02882303761517631454"

NOTE: 极光只有appkey所以只需要配置appkey即可

三 通知栏自定义行为使用方式

统一推送平台目前由五种方式,详情参见

问题说明

+--- com.huawei.android.hms:push:2.5.2.300
|    \--- com.huawei.android.hms:base:2.5.2.300
+--- com.meizu.flyme.internet:push-internal:3.6.3
\--- com.meizu.flyme.internet:push-open:2.0.0
     \--- com.squareup.wire:wire-runtime:2.3.0-RC1
          \--- com.squareup.okio:okio:1.11.0