Android简单集成OPPO、VIVO、小米、华为推送服务

最近项目需求,自己简单集成了OPPO、VIVO、小米、华为的推送服务,记录一下方便以后自己使用
Github地址:Android简单集成OPPO、VIVO、小米、华为推送服务

  1. oppo推送

  2. vivo推送

  3. 小米推送

  4. 华为推送

    OPPOVIVO小米华为
    透传不支持不支持支持支持

使用流程

  1. 申请各个平台的 APP_ID 和密钥,并在build.gradle配置文件中设置对应清单
manifestPlaceholders = [
                              'VIVO_APP_ID'       : 'xxxxxxx',
                              'VIVO_APP_KEY'      : 'xxxxxxx',
                              'MI_APP_ID'         : 'xxxxxxx',
                              'MI_APP_KEY'        : 'xxxxxxx',
                              'OPPO_APP_KEY'      : 'xxxxxxx',
                              'OPPO_APP_SECRET'   : 'xxxxxxx',
      ]
特别地,华为:配置  maven { url 'https://developer.huawei.com/repo/' };
        App中添加了“agconnect-services.json”,并在“buildscript > dependencies”中增加agcp插件配置。
            buildscript {
                dependencies {
                    ...
                    // 增加agcp插件配置,推荐您使用最新版本的agcp插件。
                    classpath 'com.huawei.agconnect:agcp:1.6.0.300'
                }
            }
        详见[华为推送集成配置](https://developer.huawei.com/consumer/cn/doc/development/HMSCore-Guides/android-integrating-sdk-0000001050040084)
  1. APP注册推送
    BeautyPushManager.getInstance().register()。
    为避免不合规检测,推荐在用户同意《用户协议》和《隐私协议》后进行注册

  2. 注意事项:

  • 成功注册推送后,想要通知栏正常显示推送,需要APP请求[打开通知]权限。
  • 对于Android 8以上的还需要设置信息通道Channel,详见创建和管理通知渠道
  • 在推送平台控制台中发送推送时,要根据APP设置的channel创建推送信息。
  • 成功注册推送,点击通知栏的推送信息跳转到具体页面,这个具体页面的配置还需要根据各个推送平台的接入文档自行在APP的“AndroidManifest.xml”进行配置
    1. VIVO通知消息的处理 [Q11:跳转配置打开应用页面和自定义键值对的示例是什么?] *
    2. OPPO通知消息的处理 [3、打开范围中,启动应用内页的地址如何填写?怎么传递参数呢?] *
    3. 小米通知消息的处理 [5.2.2. 通知消息的处理] *
    4. 华为通知消息的处理 [自定义点击消息动作] *
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,以下是一个简单的无activity应用,用于增强QQ的小米推送服务vivo推送服务OPPO推送服务华为推送服务,并且用if语句判断省电政策是否关闭的Java代码示例: ```java public class App extends Application { private static final String TAG = "PushService"; @Override public void onCreate() { super.onCreate(); if (!isIgnoringBatteryOptimizations()) { requestIgnoreBatteryOptimizations(); } // 小米推送服务 if (shouldUseMiPush()) { MiPushClient.registerPush(this, "APP_ID", "APP_KEY"); Log.i(TAG, "MiPushClient initialized"); } // vivo推送服务 if (shouldUseVivoPush()) { PushClient.getInstance(getApplicationContext()).initialize(); Log.i(TAG, "VivoPushClient initialized"); } // OPPO推送服务 if (shouldUseOppoPush()) { PushManager.getInstance().register(this, "APP_ID", "APP_KEY"); Log.i(TAG, "OppoPushClient initialized"); } // 华为推送服务 if (shouldUseHuaweiPush()) { HMSAgent.init(this); Log.i(TAG, "HuaweiPushClient initialized"); } } private boolean isIgnoringBatteryOptimizations() { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { String packageName = getPackageName(); PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE); if (pm != null && !pm.isIgnoringBatteryOptimizations(packageName)) { return false; } } return true; } private void requestIgnoreBatteryOptimizations() { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { Intent intent = new Intent(); String packageName = getPackageName(); PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE); if (pm != null && !pm.isIgnoringBatteryOptimizations(packageName)) { intent.setAction(Settings.ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS); intent.setData(Uri.parse("package:" + packageName)); startActivity(intent); } } } private boolean shouldUseMiPush() { // 判断是否是小米设备,如果是,则返回true,否则返回false return Build.MANUFACTURER.equalsIgnoreCase("Xiaomi"); } private boolean shouldUseVivoPush() { // 判断是否是vivo设备,如果是,则返回true,否则返回false String manufacturer = Build.MANUFACTURER; String model = Build.MODEL; return (manufacturer.equalsIgnoreCase("vivo") || model.toUpperCase().startsWith("VIVO")); } private boolean shouldUseOppoPush() { // 判断是否是OPPO设备,如果是,则返回true,否则返回false return Build.MANUFACTURER.equalsIgnoreCase("OPPO"); } private boolean shouldUseHuaweiPush() { // 判断是否是华为设备,如果是,则返回true,否则返回false return Build.MANUFACTURER.equalsIgnoreCase("Huawei") || Build.MANUFACTURER.equalsIgnoreCase("Honor"); } } ``` 上述代码中,我们创建了一个名为`App`的类,继承自`Application`类,并重写了`onCreate`方法。在`onCreate`方法中,我们首先判断省电政策是否关闭,如果没有关闭,则请求关闭省电政策。然后,我们根据设备厂商的不同,选择使用小米vivoOPPO华为推送服务中的一个或多个。在使用推送服务时,我们需要根据各个厂商的要求,进行相应的初始化操作,例如在使用小米推送服务时,需要调用`MiPushClient.registerPush`方法进行注册;在使用vivo推送服务时,需要调用`PushClient.getInstance(getApplicationContext()).initialize()`方法进行初始化;在使用OPPO推送服务时,需要调用`PushManager.getInstance().register`方法进行注册;在使用华为推送服务时,需要调用`HMSAgent.init`方法进行初始化。需要注意的是,我们在使用`shouldUseXXXPush`方法判断是否选择使用某个厂商的推送服务时,要根据实际情况进行判断。同时,如果需要使用多个厂商的推送服务,也可以在代码中添加相应的判断语句。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值