如何通过Cordova实现iOS前台推送通知本地化并修改弹窗按钮文字?
修改Ionic 3中Pushbots插件iOS前台通知弹窗按钮文字
嘿,刚好折腾过这个需求!在Ionic 3里用Pushbots-cordova-plugin修改iOS前台通知弹窗的Cancel/Open按钮文字,得结合插件初始化配置和推送Payload的自定义类别来搞,给你一步步说清楚:
1. 先补全插件初始化的iOS基础配置
首先你的初始化代码里,iOS部分需要开启前台通知权限,不然前台根本弹不出通知弹窗。补全后的代码如下:
window["plugins"].PushbotsPlugin.initialize( "PROJECT_ID", { "android": { "sender_id": "SENDER_ID", "icon": "ic_stat_pushbots_sicon" }, "ios": { "badge": true, // 允许角标显示 "sound": true, // 允许通知声音 "alert": true, // 允许弹窗通知 "foreground": true // 关键:开启前台推送弹窗 } } );
这里的foreground: true是必须的,不然APP在前台运行时不会弹出通知弹窗。
2. 核心操作:注册自定义通知类别
iOS的通知按钮文字是通过自定义通知类别来定义的,你需要在APP启动时注册这个类别,把默认的Cancel/Open换成你想要的文字。
在app.component.ts的platform.ready()回调里(或者deviceready事件监听里)添加以下代码:
document.addEventListener('deviceready', function() { // 注册自定义通知类别,替换默认按钮文字 window["plugins"].PushbotsPlugin.registerNotificationCategory({ id: 'custom_notify_category', // 类别唯一ID,后面推送要用到 actions: [ { id: 'cancel_btn', title: '取消', // 这里写你要替换Cancel的文字 activationMode: 'background', // 点击后后台处理,不唤醒APP destructive: false, authenticationRequired: false }, { id: 'open_btn', title: '打开应用', // 这里写你要替换Open的文字 activationMode: 'foreground', // 点击后唤醒APP到前台 destructive: false, authenticationRequired: false } ] }); }, false);
参数说明:
activationMode:设为foreground会在点击按钮时把APP带到前台;background则在后台执行操作(适合不需要打开APP的场景)destructive:设为true会让按钮显示红色(比如删除类操作)
3. 推送Payload绑定自定义类别
最后一步,不管你是从Pushbots后台发推送,还是自己的服务器调用Pushbots API,都需要在iOS的推送Payload里指定刚才注册的类别ID:
示例(Pushbots后台自定义Payload):
{ "aps": { "alert": "这是一条自定义按钮的通知", "badge": 1, "sound": "default", "category": "custom_notify_category" // 必须和注册的类别ID完全一致 } }
如果是服务器调用API,只要把这个category字段放到aps对象里就行。
几个注意点
- 确保你的Pushbots-cordova-plugin版本在v3.0以上,旧版本不支持自定义通知类别
- iOS 10及以上才支持自定义通知按钮,低版本会自动 fallback 到默认弹窗(只有关闭按钮)
- 注册类别的代码必须在
deviceready事件触发后执行,不然插件还没初始化会报错
内容的提问来源于stack exchange,提问作者outcast
相关产品推荐
相关产品推荐

