【问题标题】:A phone call notification simulation using ionic framework使用离子框架的电话通知模拟
【发布时间】:2017-09-02 19:35:09
【问题描述】:

我想从服务器向 ionic 客户端发送推送通知,并在客户端中显示此通知,就像打电话一样(移动设备应该播放声音并显示带有呼叫者信息的“接受”或“拒绝”按钮)。如果移动应用程序没有运行或在后台运行,它应该可以工作,这就是我决定使用 FCM 消息的原因。

this.storage.get('firebase_token').then((token) => {
  console.log('Orders get firebase token and call register. Token: ' + token);
  this.agentService.registerPushNotifications(token, () => {
       this.firebase.onNotificationOpen().subscribe((notification) => {

           // How to open the app and show the page with a ringtone ??

       });
  });
});

如何打开应用程序并在传入推送通知中显示带有铃声的呼叫页面?或者也许有更好的方法来实现这种功能。

【问题讨论】:

  • 您所要求的是不可能的,这不是推送通知可以做到的。 IONIC 不能做那样的事情
  • @AhmadAlfy 过程是这样的:A 向 B 发送报价。B 收到警报和带有接受/拒绝按钮的传入报价页面。 PersonB 的应用程序可能未运行或处于后台模式。如何使用离子框架完成此功能?提前致谢
  • 您可以发送常规推送通知,当用户打开它时将他重定向到应用程序内的一个页面,要求他批准或不批准。
  • 我已经这样实现了,但看起来不太好,因为 B 可能会错过通知。但如果是铃声/来电页面,它将向 B 人显示几秒钟并发出警报。但它似乎是 Ionic 的一个不可能的功能。谢谢
  • 不好意思,我已经添加了答案:(

标签: android ios mobile ionic-framework ionic2


【解决方案1】:

Ionic 无法实现您所要求的(与电话相同的格式)。但是,您可以将用户重定向到应用程序内您要求他采取行动的视图。

以推送通知为例。在 app.components.ts 中,我在平台准备就绪时初始化此函数

  initializePushNotifications() {
    let pushObject = this.push.init({
      android: {
        senderID: 'Your ID Here',
        icon: 'logo'
      },
      ios: {
        alert: true,
        badge: false,
        sound: true
      },
      windows: {}
    });
    if (!pushObject['error']) {
      pushObject.on('registration').subscribe((data: RegistrationEventResponse) => {
          // Whatever you want to do
      }, err => {
        console.log('Couldnt register:', err);
      })
      pushObject.on('notification').subscribe((data: any) => {
        let self = this;
        // When the user click the push notification
        if (!data.additionalData.foreground) {
          switch (data.additionalData.entity_type) {
            case 'takeAction':
              this.openView(data.additionalData.user_name, data.additionalData.id);
              break;
              ......
          }
        }
      });
      pushObject.on('error').subscribe((e: any) => {
        console.log(e.message);
      });

    } else {
      console.error(pushObject);
    }
  }

看,在推送的消息中,我们在 additionalData 键下添加了一个对象,您可以在其中传递您想要的任何内容。你可以传递类似entity_type 的值takeAction。当用户单击它时,您可以打开一个新视图并传递其他参数,例如用户名和实体 ID 等。

在此屏幕上,您可以打开一个警报,要求用户单击是或否,然后根据他的输入触发正确的请求。

注意

我知道这与您的要求不同,但使用 Ionic 无法满足您的要求。

【讨论】:

  • 感谢您的回复,我使用的是最新版本的Ionic。您的版本似乎适用于 Ionic 1。
  • 不,那是 ionic 2 和 typescript
猜你喜欢
  • 1970-01-01
  • 2016-06-04
  • 1970-01-01
  • 2020-01-07
  • 1970-01-01
  • 2016-01-01
  • 1970-01-01
  • 2015-10-09
  • 1970-01-01
相关资源
最近更新 更多