1

我正在尝试设置 iOS 推送通知,过去 4 个小时我一直在兜圈子,但一无所获。

该应用程序是用 Swift 2.3 编写的。

我设置了 AppBoy 应用程序...

Appboy.startWithApiKey("blahblahblahblah", inApplication:application, withLaunchOptions:launchOptions)

我可以看到我创建的细分中有 iOS 应用的用户。

然后在代码中注册通知并使用此代码将设备令牌发送到 AppBoy...

extension NSData {
  func hexString() -> String {
    // "Array" of all bytes:
    let bytes = UnsafeBufferPointer<UInt8>(start: UnsafePointer(self.bytes), count:self.length)
    // Array of hex strings, one for each byte:
    let hexBytes = bytes.map { String(format: "%02hhx", $0) }
    // Concatenate all hex strings:
    return hexBytes.joinWithSeparator("")
  }
}

和这个...

func application(application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: NSData) {
  let token = deviceToken.hexString()

  Appboy.sharedInstance()?.registerPushToken(token)
}

但是,当我更新 AppBoy 中的 Segment 过滤器以按“Push Enabled”过滤时,我得到 0 个设备。(我什至不确定 Push Enabled 是否是正确的过滤器?)

作为次要问题。我上传到 AppBoy 的证书告诉我它是“通用证书”和最新的通知传递方法。这是上传到 AppBoy 的正确证书吗?

我使用我创建的细分创建了一个活动,它显示为已传递一条消息。

但无论我什么都不做,都会传到我的设备上。

我设备上安装的应用程序版本是通过 Crashlytics 下载和安装的。

谢谢

更新

好的,所以现在我让设备显示为“已启用推送”,但是当我尝试发送推送通知时,开发人员控制台中的错误日志显示“错误发送到错误的推送令牌......”

我的证书显示是这样的......

在此处输入图像描述

谁能解释我做错了什么?我遵循了每一个故障排除指南,并对设置进行了三次检查,并多次重做每一步。

4

1 回答 1

0

如果您收到提示以接受来自您的应用程序的推送通知,但您在 Braze 仪表板中的用户配置文件未按预期更新,请确保在将设备令牌传递回 Braze 之前正确格式化设备令牌。下面的代码和更多详细信息可在此处获得。

func application(_ application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data) {
    let deviceTokenString = String(format: "%@", deviceToken as CVarArg)
    Appboy.sharedInstance()?.registerPushToken(deviceTokenString)
}

如果您担心要将哪个证书添加到 Braze 仪表板,我建议您使用从您的 Apple 开发人员帐户下载的 .p8 文件。详细说明在这里

一个容易犯的错误是忘记在 Braze Dashboard 和您的应用程序授权设置中更新环境设置。在模拟器上开发和测试应用程序或加载到测试设备上时,请确保将 Braze 仪表板中证书详细信息上方的环境设置设置为开发。将其移至 TestFlight 和 App Store 后,您需要将其更新为 Production。

希望这可以帮助。

于 2019-07-23T20:15:49.567 回答