Могу ли я импортировать токены OneSignal в FCM? - PullRequest
0 голосов
/ 09 декабря 2018

У меня есть несколько тысяч OneSignal web push токенов уведомлений, которые я хочу импортировать в FCM.Есть ли способ сделать это?

Я вижу эту конечную точку, которая требует конечную точку https://fcm.googleapis.com/fcm/send/...key..., которую мне дает OneSignal, но я не знаю, что ввести для auth и p256dh.

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

Ответы [ 2 ]

0 голосов
/ 22 февраля 2019

Это намного сложнее, чем ответ Дэна.Если ваши пользователи не подписываются на вашего сервисного работника, это не сработает.ОС отправит уведомление по умолчанию, когда возникнет «неизвестная» ошибка, и отправит «У вас есть новые обновления» в качестве уведомления пользователю, даже если вы передали другую полезную нагрузку.Вам также нужно передать: "custom": { "i": uuidv1() } в полезную нагрузку, чтобы он работал.(не забудьте сначала установить uuid через npm и вызвать его).Проверьте эту ссылку, и вы выясните, какие другие реквизиты полезной нагрузки вам нужно пройти.

0 голосов
/ 20 февраля 2019

Так что да, это можно сделать.Для начала вам необходимо обратиться в службу поддержки OneSignal и получить открытые и закрытые ключи VAPID для вашего приложения.Каждое приложение в вашей панели мониторинга будет иметь свой набор.

Далее вам нужно будет выполнить вызов API для OneSignal, чтобы экспортировать пользователей в файл CSV.

API можно найти.URL в документах и ​​используйте curl или используйте свой любимый язык.Я использовал Node + Axios, чтобы звонить.Вызов API предоставит вам ссылку для загрузки CSV.

Вот документация https://documentation.onesignal.com/reference#csv-export

Вы хотите убедиться, что добавили параметр "extra_fields" в свой запрос с помощьюДобавлены поля "web_auth" и "web_p256".CSV предоставит вам другую часть головоломки, которая является URL-адресом конечной точки в столбце их идентификатора.

Получив всю эту информацию, вы теперь можете отправлять push-сообщения, используя библиотеку, такую ​​как web-push для Node

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

Надеюсь, что это поможет!

РЕДАКТИРОВАТЬ

Как сказал Седрик, фактическая полезная нагрузка push немного сложнее, потому что вам необходимо соблюдатьобработка рабочих данных службы OneSignal.

Вы можете увидеть форматирование, начинающееся со строки 313 здесь

Если вы используете такую ​​библиотеку, как web-push для Node, чтобы отправить ваш pushПолезные нагрузки Ваша полезная нагрузка будет отформатирована примерно так для стандартного отправки работнику службы 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)
...