You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何向AWS Pinpoint提供iOS设备令牌?直接消息发送失败求助

解决AWS Pinpoint直接消息推送失败的问题

我之前也踩过一模一样的坑!你遇到的Failed to submit push notification to...错误,大概率就是deviceToken的字符串转换方式不对导致的——用[deviceToken description]转字符串再手动去括号空格的方法,很容易出现隐性格式问题,APNs根本不认这个令牌。

正确的iOS DeviceToken转字符串方法

别再用description方法了,直接通过字节遍历生成标准十六进制字符串才是正确姿势。给你一段Objective-C的实现代码:

- (NSString *)validDeviceTokenStringFromData:(NSData *)deviceToken {
    if (!deviceToken || deviceToken.length == 0) return nil;
    
    const unsigned char *tokenBytes = deviceToken.bytes;
    NSMutableString *tokenString = [NSMutableString stringWithCapacity:deviceToken.length * 2];
    
    for (NSUInteger i = 0; i < deviceToken.length; i++) {
        [tokenString appendFormat:@"%02x", tokenBytes[i]];
    }
    
    return tokenString;
}

这段代码会把deviceToken的每个字节转换成两位十六进制字符,最终得到一个纯小写、无任何额外符号的字符串,完全符合APNs和AWS Pinpoint的要求。

后续验证步骤

  • 用上面的方法获取到正确的deviceToken字符串后,复制到Pinpoint控制台的对应字段
  • 确认你的Pinpoint应用已经配置了对应环境的APNs证书(测试设备用沙箱证书,正式设备用生产证书,别搞混)
  • 检查目标设备的推送通知权限是否已经开启(设置→通知→你的应用,确认允许通知)
  • 查看Pinpoint里对应的Endpoint状态是否为ACTIVE,如果是INACTIVE可能需要重新注册

按这个流程来,应该就能解决推送失败的问题了!

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

火山引擎 最新活动