OneSignal iOS SDK发送通知失败代码400



我所做的:

我创建了一个简单的iOS原生应用程序,除了OneSignal初始化代码什么都没有。我在我的两个设备上安装了我的应用程序,设备A和设备B。这两个设备都订阅了我的OneSignal应用程序控制台。当我从OneSignal Web控制台发送通知时,这两个设备都可以收到通知。

我想做的事:

当我点击设备a上的按钮时,设备a会向设备B发送通知。

问题是什么:

我遵循了OneSignal iOS SDK文档并创建了以下函数https://documentation.onesignal.com/docs/ios-native-sdk#section-发送通知

func onButtonClick() {
OneSignal.postNotification(
[
"contents": ["en": "Test Message"],
"include_player_ids": ["c00bb8a6-79da-419b-9999-e919831a5223"] // id of device B
],
onSuccess: {(result) in print("success") },
onFailure: {(error) in print("error : (error)") }
)
}

但是,当我单击该按钮时,xCode调试控制台中显示了一个错误:

2017-01-20 11:15:52.702852 my.bundle.id[2263:1201122] ERROR: Create notification failed
error : Optional(Error Domain=OneSignalError Code=400 "(null)" UserInfo={returned={
errors =     (
"Please include a case-sensitive header of Authorization: Basic <YOUR-REST-API-KEY-HERE> with a valid REST API key."
);
reference =     (
"https://documentation.onesignal.com/docs/accounts-and-keys#section-keys-ids"
);
}})

我很困惑,因为根据OneSignal参考文档,使用"include_player_ids"发送通知不需要API Auth Key

https://documentation.onesignal.com/reference#create-通知

它还说:永远不要在客户端代码中使用"REST API密钥",它只用于您的系统或服务器

那么这个错误是什么意思呢?我该怎么办?

我甚至从这次讨论中复制并运行了这个"没有任何问题的工作"代码,但同样的授权错误仍然出现。我做错了什么?

答案

只要升级SDK,问题就会消失。

这是OneSignal iOS SDK2.3.1中的一个错误,该错误已在2.3.2中修复。

请参阅他们的Github发行说明。

如何避免此类问题

始终在pod install之前运行pod repo update,以确保pod安装最新版本的框架。

感谢One Signal Conversations的Kevin、Jason和Josh帮助我解决这个问题。

最新更新