VIVO消息推送 Android PUSH-SDK集成指南

点击此处下载 PUSH SDK接入文档(若公司网络下载压缩包解压异常,建议切换其他网络下载)

点击此处下载 PUSH SDK接入文档(若公司网络下载压缩包解压异常,建议切换其他网络下载)

版本信息具体说明
版本号:484、版本名:3.0.0.4更新内容:
1.优化代码,去掉非必要逻辑;
版本号:483、版本名:3.0.0.3更新内容:
1.修复了读取外部存储的问题;
版本号:482、版本名:3.0.0.2更新内容:
1.恢复了仅用于兼容v3.0.0.0_480以前点击回调接口:onNotificationMessageClicked;
版本号:481、版本名:3.0.0.1更新内容:
1.修复统一推送联盟接口的已知问题;
版本号:480、版本名:3.0.0.0更新内容:
1.修复安全漏洞:通知不再支持拉起非导出的Activity;
2.优化push通知点击启动慢的问题;
3.移除onNotificationMessageClicked回调,自定义参数需要统一在被拉起的Activity中通过Intent接收;

注意:

1.vivo推送服务SDK支持的最低android版本为Android 6.0。

2.当通过”自定义/打开应用页面”方式启动应用内Activity时,该Activity在AndroidManifest.xml必须配置属性android:exported=”true”。

3.由于项目架构变动,可能会导致您在更新sdk版本时类的路径错误,重新导入类的路径即可。

一、集成sdk

1. 导入aar 包

将解压后的libs文件夹中vivopushsdk-VERSION.aar(vivopushsdk-VERSION.aar为集成的jar包名字,VERSION为版本名称)拷贝到您的工程的libs文件夹中。

在android项目app目录下的build.gradle中添加aar依赖。

dependencies {

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

  implementation   files("libs/vivo_pushSDK_v3.0.0.4_484.aar")

}

2. 添加权限

vivo Push集成只需要配置网络权限,请在当前工程AndroidManifest.xml中的manifest节点下添加以下代码:

<!—Vivo Push需要的权限--> 

<uses-permission  android:name="android.permission.INTERNET"/>

3. 配置appid 、api key等信息

vivo Push集成需要配置对应的appid 、app key信息,其中appid 和app key是在开发者平台中申请的,详见 vivo push 操作手册。

请在当前工程AndroidManifest.xml中的Application节点下添加以下代码(建议复制粘贴防止出错):

<!--Vivo Push开放平台中应用的appid 和api key--> 
<meta-data 
   android:name="api_key" 
   android:value="xxxxxxxx"/> 

<meta-data 
   android:name="app_id" 
   android:value="xxxx"/>

4. 自定义通知回调类

在当前工程中新建一个类 PushMessageReceiverImpl(自定义类名)继承OpenClientPushMessageReceiver 并重载实现相关方法。并在当前工程的AndroidManifest.xml文件中,添加自定义Receiver信息,代码如下:

<!--push应用定义消息receiver声明--> 
<receiver android:name="xxx.xxx.xxx.PushMessageReceiverImpl(自定义类名)" 
   android:exported="false">    
<intent-filter> 
	<!--接收push消息--> 
   <action android:name="com.vivo.pushclient.action.RECEIVE"/> 
</intent-filter>
</receiver>

5. 注册service

接入SDK,需注册相关服务以确保正常。

请在当前工程AndroidManifest.xml中的Application节点下添加以下代码(建议复制粘贴防止出错):

<!--Vivo Push需要配置的service、activity--> 
<service 
   android:name="com.vivo.push.sdk.service.CommandClientService" 
   android:permission="com.push.permission.UPSTAGESERVICE"
   android:exported="true"/>

6. 配置sdk版本信息(仅通过jar包集成方式需要配置,通过aar包集成无需配置)

通过jar包方式接入SDK,需配置SDK版本信息确保正常。

请在当前工程AndroidManifest.xml中的Application节点下添加以下代码(建议复制粘贴防止出错):

<!--Vivo Push SDK的版本信息--> 
<meta-data 
   android:name="sdk_version_vivo" 
   android:value="484"/>

二、启动推送

在工程的Application中,添加以下代码,用来启动打开push开关,成功后即可在通知消息到达时收到通知。

//在当前工程入口函数,建议在Application的onCreate函数中,添加以下代码:

//初始化push
PushClient.getInstance(getApplicationContext()).initialize(); 

// 打开push开关, 关闭为turnOffPush,详见api接入文档
PushClient.getInstance(getApplicationContext()).turnOnPush(new IPushActionListener() { 
    @Override
    public void onStateChanged(int state) { 
       // TODO: 开关状态处理, 0代表成功
    } 
});

三、获取token

即获取regId,使用PushClient.getInstance(context).getRegId() 函数获取;

在 Api 接口 turnOnPush回调成功之后,即可获取到注册id。

四、点击通知消息

当设备接收到通知消息后,查看手机的通知栏,当点击通知时,打开通知动作分为打开App首页、打开特定Uri 网址页面、 打开用户自定义、打开应用指定页面。

注意: Sdk 3.0.0.0 以前版本的页面跳转类型打开自定义、打开指定应用页面,在Sdk 3.0.0.0及以后版本中已统一作为打开自定义页面处理。 服务端Api 字段 skipType 跳转类型分别是: 1 是打开App 首页, 2 是打开特定Url 网址页面, 4 是打开自定义页面。

打开App首页或者打开自定义页面,是通过VIVO手机通知中心跨应用启动Activity来实现,需要App保证被拉起的目标Activity exported属性默认设置为true,无权限配置,可以在点击通知时打开指定的Activity。

1. 打开App 首页

在AndroidManifest.xml文件配置主Activity。

在AndroidManifest.xml文件注册的首页Activity 中,配置
<intent-filter>
    <action android:name="android.intent.action.MAIN" />
    <category android:name="android.intent.category.LAUNCHER" />
</intent-filter>

在Activity 中接受数据:

开发者在首页的Activity 的onCreate 或者 onNewIntent 中,通过如下方式获取数据。

获取消息id,即messageId:

String messageId = intent.getLongExtra("vivo_push_messageId");

获取透传的自定义键值对值,如下,

遍历所有key(遍历clientCustomMap和skipContent的自定义key-value):

Bundle bundle = intent.getExtras();
if (bundle != null) {
    for (String key : bundle.keySet()) {
        if (!TextUtils.isEmpty(key)) {
            //注意传递的参数类型
            String content = bundle.getString(key);
        }
    }
}

取单个key(取clientCustomMap和skipContent特定key对应的value):

Intent intent = getIntent();
if (intent != null) {
    String key1 = intent.getStringExtra("key1");
    int key2 = intent.getIntExtra("key2", -1);
}
其中key1为用户自定义String型键值对参数值;key2为用户自定义Integer型键值对参数值。

2. 打开自定义页面

注意:原有通过onNotificationMessageClicked回调接收自定义参数的方式已经废弃,自定义参数需要统一在被拉起的Activity中通过Intent接收。

跨应用启动客户端App需要显示启动,通过Intent 携带透传参数到App,生成好对应的 Intent 参数,然后调用服务端Api 指定Intent 参数来打开自定义App页面;

生成 Intent 参数:

在Android 开发工具中,参考如下代码生成 Intent
Intent intent = new Intent(this,CustomActivity.class);
//Scheme协议(vpushscheme://com.vivo.push.notifysdk/detail?)开发者可以自定义
intent.setData(Uri.parse("vpushscheme://com.vivo.push.notifysdk/detail?"));
//intent 中添加自定义键值对,value 为 String 型
intent.putExtra("key1", "xxx"); 
//intent 中添加自定义键值对,value 为 Integer 型
intent.putExtra("key2", xxx);
//得到intent url 值
//示例:intent://com.vivo.pushtest/detail?#Intent;scheme=vpushscheme;component=com.vivo.pushdemo.test/com.vivo.pushsdk.CustomActivity;S.key1=xxx;i.key2=2;end
String intentUri = intent.toUri(Intent.URI_INTENT_SCHEME);
备注 : 开发者以自己实际定义的为准。

注意:在AndroidStudio里生成intentUri后,开发者通过服务端Api或者在管理后台发送通知时,跳转内容(Api 对应字段 为skipContent)透传上例生成的intentUri值,然后在点击通知时打开自定义的 CustomActivity。

在AndroidManifest.xml文件注册被启动的Activity

比如被启动的自定义页面 CustomActivity,其中host、path、scheme 一定要与上面的 Intent 生成参数匹配。

注意:该属性必须设置android:exported=”true”

配置如下:

<activity android:name=".CustomActivity"   
    android:exported="true">
    <intent-filter>
        <action android:name="android.intent.action.VIEW" />
        <category android:name="android.intent.category.DEFAULT" />
        <category android:name="android.intent.category.BROWSABLE" />
        <data
            android:host="com.vivo.push.notifysdk"
            android:path="/detail"
            android:scheme="vpushscheme" />
        </intent-filter>
</activity>

注意: activity 名称用户自己定义.

在自定义的 CustomActivity 中接收数据

如下:

public class CustomActivity extends Activity {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.xxx);
        //获取通知消息的messagId
        String messageId = intent.getStringExtra("vivo_push_messageId");
        //获取自定义透传参数值
        Intent intent = getIntent();
        if (null != intent) {
            String key1 = intent.getStringExtra("key1");
            int kye2 = intent.getIntExtra("key2", -1);
        }
    }
}

3. 打开特定Uri 网址

开发者通过Api(Api 对应字段 为skipContent)或者管理后台传自己要打开的Url 网址地址即可。

4. 恢复了仅用于兼容v3.0.0.0_480以前点击回调接口:onNotificationMessageClicked

注意Push SDKv3.0.0.2_482特性:该接口仅用于解决v3.0.0.0_480之前的版本升级Push SDK过程中发送的老版本打开自定义通知(skiptype=3)需要依赖点击回调完成跳转时使用,
  新版本通知点击该点击回调是不可用的。

五、混淆说明

若需要混淆app,请在混淆文件中添加以下说明,防止SDK内容被二次混淆,自定义回调类切勿混淆。

-dontwarn com.vivo.push.** 

-keep class com.vivo.push.**{*; } 

-keep class com.vivo.vms.**{*; }

-keep class   xxx.xxx.xxx.PushMessageReceiverImpl{*;}

六、统一推送联盟接入

说明:请完成上述 ‘1.集成SDK’ 和 ‘2.配置信息’ 两个步骤再开始统一推送联盟的接入。

1. 打开push开关

这里只是做了相应的初始化操作,建议用户在自己应用的Application中onCreate()方法中调用turnOnPush操作。

示例代码:

VUpsManager.getInstance().turnOnPush(this, new UPSTurnCallback() {
    @Override
    public void onResult(CodeResult codeResult) {
        if(codeResult.getReturnCode()   == 0){
            Log.d(TAG, "初始化成功");
        }else {
            Log.d(TAG, "初始化失败");
        }
    }
});

2. 注册push

注册push,获取申请的regId,即token。

示例代码:

VUpsManager.getInstance().registerToken(this, "XXX", "XXX", "XXX", new UPSRegisterCallback() {
    @Override
    public void onResult(TokenResult tokenResult) {
        if (tokenResult.getReturnCode() == 0) {
            Log.d(TAG, "注册成功 regID = " +   tokenResult.getToken());
        } else {
            Log.d(TAG, "注册失败");
        }
    }
});

编辑:yimen,如若转载,请注明出处:https://www.yimenapp.com/kb-yimen/12131/

部分内容来自网络投稿,如有侵权联系立删

(0)
上一篇 2022年11月23日 下午4:06
下一篇 2022年11月23日 下午4:09

相关推荐