OneSignal的iOS SDK发送通知的失败码400(OneSignal iOS SDK sen

2019-09-28 03:01发布

我做了什么:

我创建了有什么,但OneSignal initializaion代码简单的iOS原生应用。 我安装在我的2台设备,设备A和设备B.这两款器件均订阅我OneSignal应用程序控制台我的应用程序。 当我从OneSignal Web控制台发送通知,2台设备既可以recive通知。

我想做的事:

当我点击设备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 <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验证密钥。

https://documentation.onesignal.com/reference#create-notification

而且,它也说: 不要使用在客户端代码的“REST API密钥”,它是为你的系统或仅服务器上使用。

那么这个错误是什么意思? 而且我应该怎么办?

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

Answer 1:

答案

只要升级SDK和问题将不复存在。

这是OneSignal-IOS-SDK中的错误2.3.1 ,这个错误是固定在2.3.2

请参阅相应Github 发行说明 。

如何避免这种问题

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

感谢凯文,从一个信号对话杰森和乔希帮我解决这个问题。



文章来源: OneSignal iOS SDK send notification fail Code 400