首页 文章

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

提问于
浏览
1

我做了什么:

我创建了一个简单的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 <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" Does not require API Auth Key.

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

它还说: NEVER use your 'REST API key' in client code, it is intended for use on your system or server only.

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

我甚至从this discussion复制并运行了这个"work without any problems"代码,但仍然显示相同的授权错误 . 我究竟做错了什么?

1 回答

  • 2

    答案

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

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

    请看他们的Github Release Notes .

    如何避免这种问题

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

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

相关问题