Android 终极推送解决方案:应用进程结束后仍能接收通知

2024-12-11 0 798

在产品开发阶段,产品经理偶尔会要求即便应用关闭,也能接收到通知。这种要求在iOS系统上相对简单,但在安卓系统上却面临诸多挑战,这成了开发者的一大难题。尽管许多人尝试了各种方法,但问题仍未得到解决。

安卓通知接收之难

在安卓系统开发领域,通常来说,一旦应用被终止,它们便与通知功能脱钩。这现象与安卓系统的固有特性紧密相关。许多应用在关闭后,便无法再接收任何推送通知。面对这种情况,开发者常常承受来自产品经理的巨大压力,迫使他们寻找有效的解决方案。此外,不同品牌的安卓设备在处理通知功能上存在差异,这无疑增加了解决问题的难度。

产品经理或许对技术难题不太熟悉,他们更关注功能的实现。这情形让开发者陷入困境,既要满足需求,又受到技术的束缚。

常见尝试及其弊端

Android 终极推送解决方案:应用进程结束后仍能接收通知

采用众多厂商的推送软件开发工具包是一种途径。然而,这个过程相当复杂。不同厂商的推送SDK各有其特定的要求和操作步骤。这无疑大大增加了开发者的工作量。比如,在华为平台上,必须遵守华为的规定;而在小米平台上,则面临小米的特定要求。

这款产品集成了知名品牌的推送软件开发工具包,应用间可以互相调用。然而,经过实际测试,发现并没有起到预期效果。这样一来,不仅浪费了开发的时间和资源,而且让开发者原本满怀希望的努力化为泡影,不得不另寻解决方案。

等待联盟方案的不确定性

众人都在期盼着统一推送联盟方案的出现。但这个等待的时间是未知的。产品经理是不会无限制地等待下去的。开发工作不能因为不确定的时间而停止。在等待期间,可能错失许多良机。比如,产品发布的机会可能会因此延误,进而可能导致潜在用户的大量流失。

Android 终极推送解决方案:应用进程结束后仍能接收通知

阿里辅助渠道推送

这里有一个可以尝试的方法,那就是利用阿里提供的辅助渠道进行推送。即便关闭了应用,也能收到通知。不过,这需要做一些前期准备,比如申请各大开放平台的应用,这是必不可少的。比如小米、华为、OPPO、VIVO、魅族等平台。另外,需要注意的是,某些开放平台的推送功能是独立设置的,需要单独开通或激活。

还有文档涉及阿里推送SDK的集成工作。在阿里云的移动推送配置中,渠道平台的相关信息同样关键。必须对这些信息进行精细化的处理。

allprojects {
    repositories {
        //阿里推送需要
        maven {
            url 'http://maven.aliyun.com/nexus/content/repositories/releases'
        }
    }
}

后台服务器的配合

辅助渠道的推送需后台服务器协同。可参照移动推送辅助通道配置的7.3场景解析,如场景1普通推送后打开App并显示辅助弹窗,或场景2普通推送后打开并出现辅助弹窗。若后台服务器不支持,此方案将无法顺畅执行。后台服务器需妥善处理与阿里推送的对接,确保数据准确推送等事宜。

dependencies {
     //阿里推送
    api('com.aliyun.ams:alicloud-android-push:3.1.6') {
        transitive true
    }
    //阿里移动推送辅助通道
    api 'com.aliyun.ams:alicloud-android-third-push:3.0.9@aar'
    //华为推送SDK依赖
    api 'com.aliyun.ams:huawei-push:2.6.3.305'
    api 'com.aliyun.ams:huawei-push-base:2.6.3.305'
}

集成实践与测试

         
         
         
        
        
        
        
        

按照文档指导,整合流程并不复杂。有些人只对部分设备进行了集成,比如小米、华为、OPPO和vivo。集成过程中,涉及到项目配置、app模块的.xml文件配置以及项目初始化等一系列步骤。在代码接收推送消息时,既要关注正常推送的代码编写,也要注意辅助渠道接收代码的规则。不过,在测试阶段,可能会遇到日志中无法显示初始化情况的问题,但不必过分担忧,可以直接进行推送测试。

在开发过程中,你是否遭遇过iOS与安卓功能实现上有较大差异的情况?若你觉得这篇内容对你有所帮助,不妨点个赞、转发一下、留下你的评论。

     /**
     * 初始化阿里云推送通道
     */
    private void initCloudChannel() {
        PushServiceFactory.init(this);
        CloudPushService pushService = PushServiceFactory.getCloudPushService();
        pushService.setDebug(true);
        pushService.register(this, new CommonCallback() {
            @Override
            public void onSuccess(String response) {
                LogUtil.d("init cloudchannel success");
            }
            @Override
            public void onFailed(String errorCode, String errorMessage) {
                LogUtil.d("init cloudchannel failed -- errorcode:" + errorCode + " -- errorMessage:" + errorMessage);
            }
        });
    }
     /**
     * 初始化辅助推送渠道
     */
    private void initThirdPushChannel() {
        // 注册方法会自动判断是否支持小米系统推送,如不支持会跳过注册。
        MiPushRegister.register(this, AppConstant.XIAOMI_APP_ID, AppConstant.XIAOMI_APP_Key);
        // 注册方法会自动判断是否支持华为系统推送,如不支持会跳过注册。
        HuaWeiRegister.register(this);
        // OPPO通道注册
        OppoRegister.register(this, AppConstant.OPPO_APP_KEY, AppConstant.OPPO_APP_SECRET); // appKey/appSecret在OPPO开发者平台获取
//        // 魅族通道注册
//        MeizuRegister.register(applicationContext, "appId", "appkey"); // appId/appkey在魅族开发者平台获取
        // VIVO通道注册
        VivoRegister.register(this);
    }

申明:本文由第三方发布,内容仅代表作者观点,与本网站无关。对本文以及其中全部或者部分内容的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。本网发布或转载文章出于传递更多信息之目的,并不意味着赞同其观点或证实其描述,也不代表本网对其真实性负责。

七爪网 行业资讯 Android 终极推送解决方案:应用进程结束后仍能接收通知 https://www.7claw.com/2801966.html

七爪网源码交易平台

相关文章

发表评论
暂无评论
官方客服团队

为您解决烦忧 - 24小时在线 专业服务