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

iOS端Braze推送报错BadDeviceToken问题求助

iOS端Braze推送BadDeviceToken问题排查方案

问题核心

通过Expo获取的iOS十六进制推送令牌被Braze转换为128位十进制字符串,导致APNs识别为无效令牌,出现推送失败;首次偶尔成功后持续报错,Android及本地通知正常,已排除退订、卸载因素。

排查与解决步骤

  • 确保Token传递格式正确
    Expo返回的iOS推送令牌是十六进制字符串(如e35d1a89c7bb23d1203cc1418def923753ca6fc55c8611d7e1c6351f1424b1ea),直接传递给Braze.registerPushToken即可,禁止任何将其转换为十进制的自定义逻辑。检查集成代码,移除可能存在的格式转换操作。

  • 验证Expo与Braze集成配置

    1. 确认expo-braze(或自定义Braze集成库)版本与当前Expo SDK版本兼容,版本不匹配可能导致token处理异常。
    2. 检查app.json/app.config.js中的Braze配置,确保ios.apnsEnvironment与TestFlight环境一致(TestFlight对应生产APNs环境)。
  • 匹配APNs环境与Braze凭证
    TestFlight安装的应用使用生产APNs环境,需在Braze控制台iOS推送设置中:

    • 上传对应生产环境的APNs证书;
    • 若使用Token认证,确保配置的是生产环境的密钥与Team ID,避免混用开发/生产凭证。
  • 完善Token刷新监听
    iOS系统会定期刷新推送令牌,需通过expo-notifications监听令牌更新事件,及时同步给Braze:

    import * as Notifications from 'expo-notifications';
    import Braze from 'react-native-appboy-sdk';
    
    Notifications.addNotificationTokenListener(({ data: newToken }) => {
      Braze.registerPushToken(newToken);
    });
    
  • 检查Braze Token存储格式
    在Braze控制台查看用户设备的推送令牌,确认存储的是原始十六进制字符串。若仍显示十进制,排查集成代码的转换逻辑,或联系Braze支持确认是否存在平台端处理bug。

  • 直接测试APNs推送
    使用原始十六进制token,通过APNs测试工具(如apns2)直接推送,验证token有效性。若直接推送成功但Braze推送失败,说明问题出在Braze的token处理或配置环节。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 01:35:13