You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 08:37:05