Android开发之推送服务(三) 集成Oppo和vivo推送

Oppo推送服务,也是在Oppo手机中使用的比较多。而且现在Oppo和Vivo两款手机最早提出美颜功能,所以这两款手机在市场上的占有率还是比较高的。
Oppo推送目前已经开发注册,Vivo目前只对部分应用开发了推送服务功能。所以目前部分应用无法使用vivo推送的暂时不要着急,后面都会有的。

OPPO推送

首先还是先去Oppo开放平台注册自己的账号和添加应用,然后获取AppKey和AppId等信息,这些操作就不再一一叙述,具体查看官网
这里同时将Oppo平台使用指南的官方地址写出来,其实就是如何使用控制台,后面会针对几个特殊的内容,比如传递自定义数据等截图具体分析。使用指南

OPPO推送SDK下载

Oppo为我们提供了下载地址,其中还包括一个官方提供的demo,不过这个demo我没有仔细看过。希望以后有时间可以将demo仔细的看一遍

OPPO推送集成

将下载的SDK中Oppo推送的jar包拷贝出来,直接放在libs文件夹中。
在执行Oppo推送之前,最好先判断当手机是否是Oppo手机,判断使用下面的内容

if(android.os.Build.BRAND.toLowerCase().contains("oppo")){
	initOppoPush();
}

然后在Application中执行Oppo推送初始化

    /**
     * 初始化OPPO推送
     */
    protected void initOppoPush() {
        //在执行Oppo推送注册之前,需要先判断当前平台是否支持Oppo推送
        if (PushManager.isSupportPush(this)) {
            PushManager.getInstance().register(this, OPPO_APPID, OPPO_APPKEY, new PushAdapter() {
                @Override
                public void onRegister(int i, String s) {
                    if (i == ErrorCode.SUCCESS) {
                        //注册成功
                        Log.e("NPL", "注册成功,registerId=" + s);
                    } else {
                        //注册失败
                        Log.e("NPL", "注册失败");
                    }
                }
            });
        }
    }

到这里基本的操作已经完成了,当通过Oppo控制台推送一些通知时,可以通过点击启动App。但是如果我们想要传递的内容不同而执行不同的操作,例如可以打开web页面,可以跳转到不同的Activity,那么这是我们需要另外一Activity。这个Activity没有实际的含义,只是起到一个承接的作用,即当点击通知时,获取传递的数据,然后根据不同的数据跳转到不同的页面。
需要在Manifest文件中添加这个Activity的声明,具体声明代码如下:

 <activity
            android:name=".OPPOPushMessageActivity"
            android:configChanges="keyboardHidden|orientation"
            android:launchMode="singleTask"
            android:screenOrientation="portrait"
            android:theme="@style/AppTheme">
            <intent-filter>
                <action android:name="com.paulniu.mypush.oppopush" />
                <category android:name="android.intent.category.DEFAULT" />
            </intent-filter>
        </activity>

其中的<action android:name="com.paulniu.mypush.oppopush" />是当我们发送应用内页时的标识

如图所示:
在这里插入图片描述

2019年2月15日15:10:13 OPPO官网对这个地方的样式做了调整
1.如果传递的是Intent Action ,如图
在这里插入图片描述
则在使用的时候需要在Manifest文件中设置如图
在这里插入图片描述
2.如果使用的是Activity,如图
在这里插入图片描述
这个就不多说了
3.如果使用的是Scheme,如图
在这里插入图片描述
那么在Manifest文件中使用的应该是如下所示

在这里插入图片描述

并且当我们选择插入的键值,就需要在客户端获取到并且解析。那么就需要在OPPOPushMessageActivity中解析。

public class OPPOPushMessageActivity extends AppCompatActivity {

    public String type = "";
    public String url = "";
    public String innerUrl = "";

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        // 取参数值
        if (getIntent().getExtras() != null) {
            // 取参数值
            Bundle bundle = getIntent().getExtras();
            Set<String> set = bundle.keySet();
            HashMap<String, String> hm = new HashMap<>();
            if (set != null) {
                for (String key : set) {
                    hm.put(key, bundle.getString(key));
                }
            }
            Log.e("NPL", "hm的值是:" + hm.toString());
            if (hm.size() > 0) {
                //解析当前的HashMap对象,可以获取具体的数据
                if (set.contains("type")) {
                    type = hm.get("type");
                }
                if (set.contains("url")) {
                    url = hm.get("url");
                }
                if (set.contains("innerUrl")) {
                    innerUrl = hm.get("innerUrl");
                }
                //根据当前type类型去执行不同的操作
            }
        }
    }
}

vivo推送

vivo推送官网地址如下: https://dev.vivo.com.cn/home
由于vivo推送目前还没有全面开发,所以这里使用的测试版本
对于vivo的推送平台的使用,这里贴出官网地址:vivo推送平台使用
vivo推送SDK下载:下载地址 这里面包括API文档,demo,SDK等内容

该说不说,还是vivo提供的文档最好,各种清晰,方便操作,对于我这样的小白很适用

vivo推送集成

SDK

首先将SDK拷贝出来放到libs文件夹中,然后重新编译

声明

在Manifest文件中对于Vivo推送需要添加部分权限和声明
权限:

<!--vivo推送所需要的权限-->
<uses-permission android:name="android.permission.INTERNET" />

声明:

 <!--vivo推送开始-->
        <!--vivo推送配置项-->
        <meta-data
            android:name="com.vivo.push.api_key"
            android:value="xxxxxxxxxxxxx" />
        <meta-data
            android:name="com.vivo.push.app_id"
            android:value="xxxxxxx" />
        <!--推送服务需要配置的 service、activity-->
        <service
            android:name="com.vivo.push.sdk.service.CommandClientService"
            android:exported="true" />
        <activity
            android:name="com.vivo.push.sdk.LinkProxyClientActivity"
            android:exported="false"
            android:screenOrientation="portrait"
            android:theme="@android:style/Theme.Translucent.NoTitleBar" />
        <!--vivo推送结束-->

之后需要在Application中执行Vivo推送的注册

 /**
     * 初始化vivo推送
     */
    protected void initVivoPush() {
        //初始化vivo推送
        PushClient.getInstance(this).initialize();
        //并且打开推送服务
        PushClient.getInstance(this).turnOnPush(new IPushActionListener() {
            @Override
            public void onStateChanged(int i) {
                if (i == 0) {
                    Log.e("NPL", "打开推送服务成功");
                } else {
                    Log.e("NPL", "打开推送服务失败");
                }
            }
        });
    }

这样就完成了基本操作。但如果需要相应点击事件,则需要创建一个广播接收器,并在里面实现相应的方法
广播接收器的注册:

<receiver android:name=".IVivoPushMessageReceiver">
            <intent-filter>
                <!-- 接收push消息 -->
                <action android:name="com.vivo.pushclient.action.RECEIVE" />
            </intent-filter>
        </receiver>

广播接收器的代码实现:

public class IVivoPushMessageReceiver extends OpenClientPushMessageReceiver {
    @Override
    public void onNotificationMessageClicked(Context context, UPSNotificationMessage upsNotificationMessage) {
        long msgId;
        String customeContent = "";
        if (upsNotificationMessage != null) {
            msgId = upsNotificationMessage.getMsgId();
            customeContent = upsNotificationMessage.getSkipContent();
            Log.e("NPL", "获取通知内容如下:msgId = " + msgId + ";customeContent=" + customeContent);
        }
    }
    @Override
    public void onReceiveRegId(Context context, String s) {
        if (TextUtils.isEmpty(s)) {
            //获取regId失败
            Log.e("NPL", "获取RegId失败");
        } else {
            Log.e("NPL", "获取RegId成功,regid = " + s);
        }
    }
}

这样就实现了vivo的推送。

  • 4
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 9
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值