@allboatsrise/expo-marketingcloudsdk

中文文档
55.0.2发布于 2026/11/07MITTypeScriptCommonJS零依赖近 30 天下载 1.7万

销售力量营销云SDK的展览模块

中文使用文档
文档目录6 节
  1. 安装
  2. 插件设置
  3. 插件参数
  4. 职能
  5. 添加事件倾听器
  6. 通知回复处理

@ 所有船只起落/远销云雾克

这是一个世博会模块,它为iOS和Android提供一款环绕销售力量营销云(SFMC)SDK的包装.

它允许基于Expo的应用程序与营销云SDK集成.

安装

要安装软件包,请使用您的首选软件包管理器 :

npm install @allboatsrise/expo-marketingcloudsdk expo-notifications zod

或者说

yarn add @allboatsrise/expo-marketingcloudsdk expo-notifications zod

插件设置

查看参数

添加软件包到 plugins 内 app.js编号 :app.config.js 最小的配置.

"expo": {
  "plugins": [
    [
      "@allboatsrise/expo-marketingcloudsdk", {
        "appId": "<< MARKETING_CLOUD_APP_ID >>",
        "accessToken": "<< MARKETING_CLOUD_ACCESS_TOKEN >>",
        "serverUrl": "<< MARKETING_CLOUD_SERVER_URL >>",
      }
    ],
    "expo-notifications"
    ]
}

应用程序中通知的初始化样本

import * as Notifications from 'expo-notifications'
import * as MarketingCloud from '@allboatsrise/expo-marketingcloudsdk'

// ensure push notifications appear regardless whether app is active or not
Notifications.setNotificationHandler({
  handleNotification: async (_notification) => {
    return {
      shouldShowAlert: true,
      shouldPlaySound: true,
      shouldSetBadge: true,
    }
  },
})

export const App: React.FC = () => {
  useEffect(() => {
    let cleanup = () => {}

    ;(async () => {
      // request push notifications permission on load
      // ideally: show this elsewhere where it's more relevant instead of as soon as when the ap loads
      let result = await Notifications.getPermissionsAsync()
      if (!result.granted && result.canAskAgain) {
        result = await Notifications.requestPermissionsAsync({
          ios: {
            allowAlert: true,
            allowBadge: true,
            allowSound: true,
          },
        })
      }

      if (!result.granted) return

      const token = await Notifications.getDevicePushTokenAsync()

      // let Marketing Cloud SDK the value of current push token
      MarketingCloud.setSystemToken(token.data)

      // In rare situations a push token may be changed by the push notification service while the app is running.
      const subscription = Notifications.addPushTokenListener((newToken) => {
        MarketingCloud.setSystemToken(newToken.data)
      })
      cleanup = () => subscription.remove()
    })()

    return () => cleanup()
  }, [])

  // remaining app logic...
}

插件参数

参数类型需求说明
appId字符串对营销云应用代号
accessToken字符串对营销云访问符
serverUrl字符串对营销云服务器 URL
senderId (仅限机器人)字符串没有营销云FCM发件人ID. 默认为 project_info.project_number 定义 android.googleServicesFile (google-services.json)如果定义的话.
mid字符串没有设置用于销售力营销Cloud租户特定中间的配置值.
inboxEnabled布尔没有设置允许或禁用收件箱服务的配置旗
locationEnabled布尔没有设置允许或禁用位置服务的配置旗
analyticsEnabled布尔没有设置允许或禁用销售力量营销的配置旗
applicationControlsBadging布尔没有设定允许或禁用应用程序控件的配置值
delayRegistrationUntilContactKeyIsSet布尔没有设置允许或禁用应用程序控制的配置值, 将 SDK 注册延迟到联系人密钥设定
markNotificationReadOnInboxNotificationOpen布尔没有设置允许或禁用打开时标记收件箱通知的配置值
debug布尔没有启用日志调试消息

使用量

各种函数、参数、返回值及其特定目的 ExpoMarketingCloudSdk

职能

函数名称说明
isPushEnabled返回一个解析为布尔的保证, 显示是否为用户启用了按下通知 .
enablePush返回一个在成功启用了按下通知后解答的承诺 .
disablePush返回一个在按下通知成功禁用时解答的诺言 .
getSystemToken返回一个承诺, 以解析一个代表设备的驱动通知符的字符串 .
setSystemToken返回一个在设备的驱动通知符成功设置时解答的保证 .
getAttributes返回一个解析到代表用户属性的对象的许诺.
setAttribute返回一个在为用户成功设定属性时解析的许诺.
clearAttribute返回在成功为用户清除属性时解析的许诺 .
addTag返回一个在成功为用户添加标签时解析的许诺 .
removeTag返回在成功删除用户标签时解析的诺言 .
getTags返回一个解析为代表用户标签的字符串的保证 .
setContactKey返回一个在用户的接触密钥成功设定后解答的承诺 .
getContactKey返回一个表示用户联系密钥的字符串解析的诺言 .
getSdkState返回一个能够解析代表 SDK 当前状态的对象的保证 .
track返回一个自定义事件成功跟踪后解答的诺言 .
deleteMessage返回当特定收件箱消息被成功删除时解答的诺言 .
getDeletedMessageCount返回一个承诺,该承诺将解析给一个代表被删除收件箱总数的数字.
getDeletedMessages返回解析到一系列 InboxMessage 代表已删除的收件箱消息的对象.
getMessageCount返回一个承诺,以解析一个代表收件箱消息总数的数字.
getMessages返回解析到一系列 InboxMessage 代表收件箱信息的对象.
getReadMessageCount返回一个承诺,以解析一个代表已读收件箱总数的数字.
getReadMessages返回解析到一系列 InboxMessage 代表已读收件箱信息的对象.
trackMessageOpened当信箱打开事件成功触发时, 返回解析为真实的诺言 .
isAnalyticsEnabled返回一个解析布尔表示是否为用户启用分析的许诺 .
enableAnalytics返回在成功启用分析后解析的许诺 .
disableAnalytics返回在解析成功禁用时解答的诺言 .
isSfmcNotificationResponse检查通知答复 NotificationResponse 原产自SFMC.
extractPayloadFromSfmcNotificationResponse从SFMC通知中提取有效载荷信息.
useLastSfmcNotificationResponse反应钩总是返回最近收到的SFMC通知回复.

添加事件倾听器

可用事件听众 :

函数参数说明
addLogListenerlistener: (event: LogEventPayload) => void将一个收听器函数添加到 onLog 事件,在生成新日志事件时触发.
addInboxResponseListenerlistener: (event: InboxResponsePayload) => void将一个收听器函数添加到 onInboxResponse 事件,当收到新的收件箱响应时触发.
addRegistrationResponseSucceededListenerlistener: (event: RegistrationResponseSucceededPayload) => void将一个收听器函数添加到 onRegistrationResponseSucceeded 事件,在 SDK 用后端成功注册时触发.
// listeners being used in a useEffect hook.

useEffect(() => {
    const logSubscription = addLogListener((logEvent: LogEventPayload) => {
        // Do something with logEvent
      })

    const inboxSubscription = addInboxResponseListener((inboxEvent: InboxResponsePayload) => {
        // Do something with inboxEvent
      })

    const registrationSubscription = MarketingCloud.addRegistrationResponseSucceededListener((registrationEvent: RegistrationResponseSucceededPayload) => {
      // Do something with registrationEvent
    })

    return () => {
      logSubscription.remove()
      inboxSubscription.remove()
      registrationSubscription.remove()
    }
}, [])

通知回复处理

使用 useLastSfmcNotificationResponse 钩键以监听用户与源自 SFMC 的相互作用的上一份通知 .

import { useLastSfmcNotificationResponse } from '@allboatsrise/expo-marketingcloudsdk'

const { response, payload } = useLastSfmcNotificationResponse()

useEffect(() => {
  if (!payload) return

  if (responsePayload.openDirectUrl) {
    // e.g. open url in the browser
  }
}, [payload])

替代使用 isSfmcNotificationResponse 以检查是否来自 useLastNotificationResponse 源自SFMC,然后使用 extractPayloadFromSfmcNotificationResponse

import { useLastNotificationResponse } from 'expo-notifications'
import { isSfmcNotificationResponse, extractPayloadFromSfmcNotificationResponse } from '@allboatsrise/expo-marketingcloudsdk'

const response = useLastNotificationResponse()

useEffect(() => {
  if (!response) return
  if (!isSfmcNotificationResponse(response)) return
  const payload = extractPayloadFromSfmcNotificationResponse(response)
  
  if (responsePayload.openDirectUrl) {
    // e.g. open url in the browser
  }
}, [payload])

版本与发布记录

@allboatsrise/expo-marketingcloudsdk 共发布 103 个版本,首次发布于 2021/12/09;过去 12 个月发布了 4 个版本。

版本发布日期距今
55.0.2latest2026/11/07今天
55.0.12026/05/135 个月前
55.0.02026/04/276 个月前
55.0.0-beta.0beta2026/04/276 个月前
54.0.12025/10/071.1 年前
54.0.02025/10/011.1 年前

其他发布通道:android → 47.0.0-android.27,beta → 55.0.0-beta.0。

关于 @allboatsrise/expo-marketingcloudsdk 的常见问题

@allboatsrise/expo-marketingcloudsdk 是什么?

销售力量营销云SDK的展览模块

如何安装 @allboatsrise/expo-marketingcloudsdk?

在项目目录运行 npm install @allboatsrise/expo-marketingcloudsdk,或使用 pnpm add / yarn add / bun add。它还需要宿主项目提供 peer 依赖:zod(^4.0.0)、expo-notifications(>=55.0.20)。npm 7 及以上与 pnpm 8 及以上默认会自动安装必需的 peer 依赖,Yarn 需要手动安装。

@allboatsrise/expo-marketingcloudsdk 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@allboatsrise/expo-marketingcloudsdk 支持 ESM 还是 CommonJS?

以 CommonJS 形式发布,可以直接 require();在 ES Module 项目中也可以用 import 引入(Node.js 会把 module.exports 作为默认导出)。

@allboatsrise/expo-marketingcloudsdk 可以商用吗?

@allboatsrise/expo-marketingcloudsdk 使用 MIT 许可。宽松许可:允许商业使用、修改和再分发,通常只需在分发时保留原版权与许可声明。以上为概括,不构成法律意见,请以许可原文为准。

@allboatsrise/expo-marketingcloudsdk 的下载量有多少?

根据 npm 官方下载统计,@allboatsrise/expo-marketingcloudsdk 在 2026/10/06 – 2026/11/04 这 30 天内被下载 17,210 次,日均约 574 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@allboatsrise/expo-marketingcloudsdk 还在维护吗?

最新版本 55.0.2 发布于 2026/11/07(今天);至今共发布 103 个版本,其中过去 12 个月发布了 4 个;首次发布于 2021/12/09。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。