Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/firebase/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Firebase 我可以将OneSignal代币导入FCM吗?_Firebase_Firebase Cloud Messaging_Onesignal - Fatal编程技术网

Firebase 我可以将OneSignal代币导入FCM吗?

Firebase 我可以将OneSignal代币导入FCM吗?,firebase,firebase-cloud-messaging,onesignal,Firebase,Firebase Cloud Messaging,Onesignal,我有几千个OneSignalweb推送通知令牌要导入FCM。有办法做到这一点吗 我看到这个端点需要https://fcm.googleapis.com/fcm/send/...key...OneSignal给我的端点,但我不知道为auth和p256dh输入什么 所以这是可以做到的。首先,您需要联系OneSignal支持部门,为您的应用程序获取公共和私人的无趣密钥。仪表板中的每个应用程序都有不同的设置 接下来,您需要对OneSignal进行API调用,以便将用户导出到CSV文件中 您可以在文档中找

我有几千个OneSignalweb推送通知令牌要导入FCM。有办法做到这一点吗

我看到这个端点需要
https://fcm.googleapis.com/fcm/send/...key...
OneSignal给我的端点,但我不知道为
auth
p256dh
输入什么


所以这是可以做到的。首先,您需要联系OneSignal支持部门,为您的应用程序获取公共和私人的无趣密钥。仪表板中的每个应用程序都有不同的设置

接下来,您需要对OneSignal进行API调用,以便将用户导出到CSV文件中

您可以在文档中找到API url,并使用curl或您最喜欢的语言。我使用Node+Axios拨打电话。API调用将为您提供下载CSV的链接

这是文件

您希望确保将“extra_fields”参数添加到请求中,并添加“web_auth”和“web_p256”字段。CSV将为您提供另一块拼图,即其标识符列中的端点url

一旦您拥有了所有这些信息,现在就可以使用库(如web push for Node)发送推送

希望有帮助

编辑

正如Cedric所说,实际的推送负载稍微复杂一些,因为您需要遵守OneSignal服务工作者数据处理

您可以看到从第313行开始的格式设置

如果您使用像for Node这样的库来发送推送有效负载,那么您的有效负载将被格式化为类似这样的格式,用于向OneSignal服务工作者进行标准推送

const uuidv1 = require('uuid/v1')
const webpush = require('web-push') 

let subscription = {
    endpoint: 'USER ENDPOINT URL',
    keys: {
        auth: 'USER AUTH KEY',
        p256dh: 'USER P256 KEY'
    }
}

let vapid = { private: 'VAPID PRIVATE KEY', public: 'VAPID PUBLIC KEY' }

// Format Message for OneSignal Service Worker
let notification = JSON.stringify({
    custom: {
        i: uuidv1(), //Generate UUID for the OneSignal Service worker to consume
        u: 'CLICK URL'
    },
    title: 'TOP TITLE',
    alert: 'MESSAGE BODY',
    icon: 'ICON IMAGE URL'
})

webpush.setVapidDetails('mailto: sendError@YourEmail.com', vapid.public, vapid.private)
webpush.sendNotification(subscription, notification)

这比丹的答案要复杂得多。如果你的用户不订阅你自己的服务人员,它将无法工作。当发生“未知”错误时,操作系统将发送其默认通知,即使您传递了不同的负载,操作系统也会将“您有新的更新”作为通知发送给用户。您还需要将:
“custom”:{“i”:uuidv1()}
传递给您的有效负载,它才能工作。(不要忘记首先通过npm安装uuid并调用它)。查看链接,您将了解您需要通过哪些其他有效负载道具。

您可以用iOS或Android标记问题,谢谢。我实际上指的是web推送通知,对不起,我应该使用Mennionedah,谢谢您更新问题!嘿,你有没有想过?遇到同样的问题issue@jiroch把我的程序写在答覆里,还有更多的问题。幸运的是,格式非常简单。我在下面的答案中添加了一些示例代码。