text 离子3订阅的信号

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了text 离子3订阅的信号相关的知识,希望对你有一定的参考价值。

import {OneSignal, OSPermissionSubscriptionState} from "@ionic-native/onesignal";
import {OpenNativeSettings} from '@ionic-native/open-native-settings';
......
  private subscribed(): Promise<boolean> {
    return new Promise((resolve, reject) => {
      if (!this.platform.is('cordova')) {
        resolve(true);
        return;
      }
      // Запрашиваем состоние доступа к уведомлениям
      this.onesignal.getPermissionSubscriptionState().then((status: OSPermissionSubscriptionState) => {

        console.log('getPermissionSubscriptionState' + JSON.stringify(status));

        // все тип топ
        if (status.subscriptionStatus.subscribed) {
          resolve(true);
          return;
        }

        // не подписан на уровне onesignal
        if ((status.permissionStatus.status === 2 || status.permissionStatus.state === 1) && !status.subscriptionStatus.userSubscriptionSetting) {
          this.onesignal.setSubscription(true);
          resolve(true);
          return
        }

        // нету разрешения на уровне системы
        //if(status.permissionStatus.status === 1 || status.permissionStatus.state === 2) { }
        // Вызываем свой алерт с возможностью перейти в настройки
        this.showConfirmationPermissionSubscription()
          .then(() => {

            let openSettings = new Promise((resolve, reject) => {
              reject();
            });

            if (this.platform.is('android')) {
              openSettings = this.openNativeSettings.open('notification_id');
            } else if (this.platform.is('ios')) {
              openSettings = this.openNativeSettings.open('application_details')
            }
            // Подписуемся на изменения настроек разрешения
            this.onesignal.addPermissionObserver().subscribe((stateChanges) => {
              console.log('addPermissionObserver' + JSON.stringify(stateChanges));

              if (stateChanges.to.status === 2 || stateChanges.to.state === 1) {
                if (!status.subscriptionStatus.userSubscriptionSetting) {
                  this.onesignal.setSubscription(true);
                }
                resolve(true);
              } else {
                resolve(false);
              }
            });
            openSettings.then(() => {
            });
          });
      });
    });

  }

以上是关于text 离子3订阅的信号的主要内容,如果未能解决你的问题,请参考以下文章

离子3 NGRX - 状态变化的订阅功能在单个状态变化时多次调用

text 离子3与Angular 5训练大纲

离子生命周期取消/订阅 Firebase 数据库流(使用异步管道)

如何使用一个信号向离子和电容器推送通知添加自定义声音

在IOS上的离子3背景音频

离子1信号有一种方法可以知道从背景到前景打开应用程序或启动应用程序时是否有推送通知