Android国内大厂推送规范整理

本文探讨了小米、华为、OPPO、VIVO和魅族等主流厂商的推送服务特性,包括通知方式、自定义功能和设备支持,以及Android8+系统下的挑战和解决方案,为开发者提供适配国内厂商推送服务的指南。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

当前很多APP用的是极光推送,现在Android系统对应用管理比前几年规范的多。因此造成了很多比较重要的通知并不能很及时的推送给用户,导致这个问题的原因就是APP很可能在后台被杀死了。所以要让APP适配下国内各大厂商的推送服务。

下来梳理下几个大厂商推送信息:

厂商推送方式透传支持自定义铃声支持的设备文档地址
小米标签(Topic)、RegID、别名(Alias)、Useraccount四种消息发送方式支持支持支持Android2.2以上和IOS系统推送文档中心
华为支持主题、Token、特定的受众群组支持支持1、华为手机、华为平板EMUI 3.1及以上。
2、非华为手机和平板。Android 5.1及以上。
3、沃尔沃和小康车机,Android 9.0及以上。
4、iPhone,iOS 10.0及以上
推送服务
OPPO推送服务支持标签、RegID、Alias等推送方式不支持不支持支持 ColorOS3.1及以上的系统的OPPO的机型,一加5/5t及以上机型,realme所有机型。OPPO开放平台
VIVO支持标签、RegID、Alias等消息发送方式。不支持不支持vivo和iqoo手机并且需要通过PushClient.getInstance(context).isSupport();(ture :系统支持push、false 系统不支持push)方法准确获知当前系统是否支持push。vivo开放平台
魅族PushId 推送、别名推送、标签推送支持不支持魅族手机、flyme系统推送文档

开发过程中遇到的问题

1、android 8及以上的系统推送通知都分了系统通道和其它通道,不重要等几个通道默认是没有提醒的,如果需要提醒就要手动在应用设置界面打开。
在这里插入图片描述

2、android 8及以上的系统横幅通知默认是关闭的,需要手动打开(微信、钉钉等大佬不用😂,估计国内手机厂商都不敢默认给人家不开启横幅通知
以下是华为官方回答:
在这里插入图片描述

3、小米自定义铃声需要申请通知通道在申请的通知通道中设置(注意我没发现申请后的通知通道能够编辑,因此需要在申请通道时正确的配置
请添加图片描述

注册和接收通知流程图

请添加图片描述

### 如何在 Android Studio 中实现和定制通知栏功能 #### 创建基本的通知 为了创建一个基础的通知,在应用程序中需要构建 `NotificationCompat.Builder` 对象并设置必要的属性。这包括设定小图标、标题以及内容文本等基本信息。 ```java NotificationCompat.Builder builder = new NotificationCompat.Builder(context, CHANNEL_ID) .setSmallIcon(R.drawable.ic_notification) .setContentTitle("通知标题") .setContentText("这里是通知的内容描述"); ``` 此处,`CHANNEL_ID` 是指定了通知所属通道的唯一标识符[^1]。 #### 添加自定义响应事件 通过向 `PendingIntent` 类传递意图对象可以为通知添加点击后的动作行为。当用户触碰该条目时就会触发此操作。对于更复杂的交互方式,则可以通过添加按钮来扩展通知的功能性: ```java // 构建待定意图 Intent intent = new Intent(context, TargetActivity.class); PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT); builder.setContentIntent(pendingIntent); // 设置点击整个通知的动作 // 如果想增加额外的操作按钮 NotificationCompat.Action action = new NotificationCompat.Action.Builder( R.drawable.ic_action, "Action Label", pendingIntent).build(); builder.addAction(action); ``` 上述代码片段展示了如何关联特定活动启动到通知上,并且还演示了怎样给通知附加可执行命令按钮的方式。 #### 处理不同版本系统的兼容性问题 针对不同的 Android 版本,特别是 API Level 较高的情况下(如 Android 8.0 及以上),开发者应当注意调整策略以确保最佳体验。例如,默认情况下系统会自动展示应用图标的徽章数目;如果不需要这项特性的话,应该显式地关闭它: ```java if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { builder.setShowBadge(false); // 禁用角标显示 } ``` 另外,由于硬件厂商可能会修改原生 ROM 的外观风格或者限制某些 UI 属性的变化范围,所以在设计阶段就要考虑到这些因素所带来的影响[^3][^4]。 #### 防止状态栏被下拉 有时出于安全考虑或者其他特殊原因,希望阻止用户打开或拖拽顶部面板。虽然这不是常规做法,但在特定应用场景里确实有用武之地。要达到这个目的,可以在 Activity 或者 Service 组件内部利用 Window Manager 来锁定屏幕布局参数中的 FLAG 值: ```java WindowManager.LayoutParams params = getWindow().getAttributes(); params.flags |= WindowManager.LayoutParams.FLAG_FULLSCREEN; getWindow().setAttributes(params); ``` 不过值得注意的是这种方法仅适用于当前窗口处于前台运行期间有效,并不能完全控制其他进程的行为[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值