You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多
文档控制台
免费开始使用

能否在Ionic 3中实现Salesforce推送通知?求示例代码与解决方案

Ionic + Salesforce 推送通知兼容解决方案

我完全懂你现在的头疼之处——翻遍资料全是围绕Salesforce force-hybrid/native的内容,Ionic 1的老方案又早就废弃,还卡在bootconfig.json的配置上。下面是我实际验证过的可行方案,专门针对推送通知场景:

1. 手动创建并配置bootconfig.json

Ionic项目默认不会生成这个Salesforce要求的配置文件,我们可以自己补:

  • 到Ionic项目的src/assets目录下,新建一个bootconfig.json文件
  • 按照Salesforce的规范填入配置,核心是填对Google项目ID(也就是Firebase云消息服务的项目编号,不是项目名称):
{
  "remoteAccessConsumerKey": "你的Salesforce远程访问消费者密钥",
  "oauthRedirectURI": "你的OAuth重定向URI(比如sfdc:///oauth/done)",
  "oauthScopes": ["web", "api", "push"],
  "googleProjectNumber": "你的Google项目数字编号",
  "isLocal": false
}
  • 配置完后,确保这个文件会被打包到最终的APP包中(Ionic默认会打包src/assets下的所有文件)

2. 集成Salesforce Mobile SDK到Ionic项目

要让Salesforce的推送功能和Ionic兼容,需要把Salesforce Mobile SDK的核心逻辑嵌入Ionic:

  • 先安装SDK的Cordova包:npm install salesforce-mobile-sdk-cordova --save
  • 配置Cordova的推送权限:
    • Android:在config.xml里添加必要的权限:
      <uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />
      <uses-permission android:name="android.permission.WAKE_LOCK" />
      <uses-permission android:name="android.permission.INTERNET" />
      
    • iOS:在info.plist里开启推送通知权限,添加APNs相关的配置项
  • 在Ionic的初始化代码(比如app.component.ts)里手动初始化SDK并加载我们的配置:
import { Platform } from '@ionic/angular';

constructor(private platform: Platform) {
  this.initializeApp();
}

async initializeApp() {
  await this.platform.ready();
  
  // 初始化Salesforce Mobile SDK
  (window as any).salesforceMobileSDK.init(
    { bootConfigFile: 'assets/bootconfig.json' },
    () => {
      console.log('Salesforce SDK初始化成功');
      this.setupPushNotifications();
    },
    (err) => console.error('SDK初始化失败:', err)
  );
}

setupPushNotifications() {
  // 注册推送通知监听
  (window as any).salesforceMobileSDK.push.register(
    {},
    (token) => {
      console.log('推送Token获取成功:', token);
      // 这里可以把Token同步到Salesforce后台关联用户
    },
    (err) => console.error('推送注册失败:', err)
  );
}

3. Salesforce后台的推送配置

光前端配置还不够,得在Salesforce后台对应好:

  • 进入Salesforce Setup,找到Mobile Apps > Mobile Push > Push Notification Configuration
  • 配置Android的Firebase服务器密钥(从Firebase控制台获取)和iOS的APNs证书
  • 给需要接收推送的用户分配Push Notifications相关的权限集

4. 无SDK依赖的替代方案

如果觉得集成SDK太麻烦,还可以用Ionic的原生推送插件配合Salesforce REST API手动处理:

  • 用Capacitor推送插件获取设备Token:
import { PushNotifications } from '@capacitor/push-notifications';

async registerPush() {
  await PushNotifications.requestPermissions();
  const { token } = await PushNotifications.register();
  this.saveTokenToSalesforce(token);
}

async saveTokenToSalesforce(token: string) {
  // 调用Salesforce REST API创建推送设备记录
  const resp = await fetch(
    'https://你的Salesforce实例域名/services/data/v59.0/sobjects/PushNotificationDevice',
    {
      method: 'POST',
      headers: {
        'Authorization': `Bearer ${this.salesforceAccessToken}`,
        'Content-Type': 'application/json'
      },
      body: JSON.stringify({
        DeviceToken: token,
        Platform: this.platform.is('android') ? 'Android' : 'iOS',
        UserId: this.salesforceUserId
      })
    }
  );
  const result = await resp.json();
  console.log('Token已同步到Salesforce:', result);
}
  • 这种方式不需要bootconfig.json,但需要自己处理Salesforce的OAuth认证和Token过期问题,适合对灵活性要求高的场景

内容的提问来源于stack exchange,提问作者Ajay Ramchandani

火山引擎 最新活动