реагировать-onesignal: подписка на Onesignal после запроса уведомления

#reactjs #onesignal

#reactjs #onesignal

Вопрос:

Я некоторое время пытался интегрировать OneSignal с моим проектом React. После нахождения пакета react-onesignal я решил попробовать.

Он интегрирован в мой код следующим образом:

     OneSignal.initialize("my_appid_is_here", {
      allowLocalhostAsSecureOrigin:true,
      autoRegister:true,
      autoResubscribe:true,
      persistNotification:true,
    })

  useOneSignalSetup(async() => {
    if (OneSignal.isPushNotificationsEnabled) {
      const instance = OneSignal.getOneSignalInstance()
      const state = await OneSignal.getNotificationPermission()
      if (state !== "granted") {
        await OneSignal.registerForPushNotifications()
      } else {
        OneSignal.setSubscription(true)
      }
    }
  })
  

Я могу вызвать запрос на регистрацию в браузере (я получаю предупреждение «хотите включить уведомления»), но когда я пытаюсь проверить «Аудиторию» в OneSignal, она по-прежнему отображается как пустая.

У вас есть какие-либо идеи, как я мог бы это сделать?

Заранее спасибо

Ответ №1:

Хотя мы ценим этот пакет, созданный автором, этот пакет не поддерживается OneSignal. Я создал это руководство о том, как интегрировать OneSignal в ваше приложение ReactJS.

https://dev.to/devpato/push-notifications-in-reactjs-with-onesignal-5bon

Вы будете использовать cdn:

     <script src="https://cdn.onesignal.com/sdks/OneSignalSDK.js" async=""></script>
  

Инициализировать OneSignal

 
window.OneSignal = window.OneSignal || [];
const OneSignal = window.OneSignal;

OneSignal.push(()=> {
      OneSignal.init(
        {
          appId: "1a9bbed2-9294-4192-a736-01b461cb389a", //STEP 9
          promptOptions: {
            slidedown: {
              enabled: true,
              actionMessage: "We'd like to show you notifications for the latest news and updates about the following categories.",
              acceptButtonText: "OMG YEEEEESS!",
              cancelButtonText: "NAHHH",
              categories: {
                  tags: [
                      {
                          tag: "react",
                          label: "ReactJS",
                      },
                      {
                        tag: "angular",
                        label: "Angular",
                      }
                  ]
              }     
          } 
        },
        welcomeNotification: {
          "title": "One Signal",
          "message": "Thanks for subscribing!",
        } 
      },
      );
    });