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

我做了什么:

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

我想做的事:

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

问题是什么:

我按照OneSignal iOS SDK文档创建了以下函数https://documentation.onesignal.com/docs/ios-native-sdk#section-sending-notifications

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  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-notification

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

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

我甚至复制并运行了此讨论中的“没有任何问题的工作”代码,但仍然显示相同的授权错误。 我究竟做错了什么?

答案

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

这是OneSignal-iOS-SDK 2.3.1中的一个错误,这个错误已在2.3.2中修复。

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

如何避免这种问题

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

感谢来自One Signal Conversations的Kevin,Jason和Josh帮我解决了这个问题。