firebase - 我可以将 OneSignal token 导入 FCM 吗?

标签 firebase firebase-cloud-messaging onesignal

我有数千个 OneSignal 网络推送 通知 token ,我想导入到 FCM。有办法做到这一点吗?

我看到此端点需要 OneSignal 提供的 https://fcm.googleapis.com/fcm/send/...key... 端点,但我不知道为 authp256dh 添加什么内容。

https://developers.google.com/instance-id/reference/server#create_registration_tokens_for_apns_tokens

最佳答案

所以是的,这是可以做到的。首先,您需要联系 OneSignal 支持并获取您的应用程序的公共(public)和私有(private) VAPID key 。仪表板中的每个应用程序都有不同的集合。

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

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

这里是文档 https://documentation.onesignal.com/reference#csv-export

您需要确保将“extra_fields”参数添加到请求中,并添加“web_auth”和“web_p256”字段。 CSV 将为您提供难题的另一部分,即标识符列中的端点 URL。

掌握所有这些信息后,您现在可以使用库(例如 Node 的 web-push)发送推送

https://github.com/web-push-libs/web-push

希望有帮助!

编辑

正如 Cedric 所说,实际的推送有效负载有点复杂,因为您需要遵守 OneSignal Service Worker 数据处理。

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

如果您使用像 web-push 这样的库为了让 Node 发送您的推送有效负载,您的有效负载将被格式化为像这样的标准推送到 OneSignal 服务 worker 。

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: <a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="17647279735265657865574e786265527a767e7b3974787a" rel="noreferrer noopener nofollow">[email protected]</a>', vapid.public, vapid.private)
webpush.sendNotification(subscription, notification)

关于firebase - 我可以将 OneSignal token 导入 FCM 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53695079/

相关文章:

android - Firebase 中的后台通知 : Android Oreo

c# - 在 C# 中使用 FCM 发送批量推送通知?

php - 组键单信号推送通知

ionic-framework - OneSignal 如何将 Push 发送到特定设备 - ionic

ios - Firebase CocoaPods 安装不工作

ios - 使用共享的 iOS Keychain 启用跨应用程序 Firebase 身份验证

javascript - FCM Web后台服务人员

swift - 无论如何都可以访问用户订阅的 Firebase 主题吗?

c# - OneSignal 推送通知 - 不适用于 WP8.1

android - 如何解决有关导出的 Firebase 消息服务实现的 android lint 投诉?