当前位置: 首页 > 知识库问答 >
问题:

电容器/离子:在后台处理推送通知或在应用程序被终止时处理推送通知

云凌
2023-03-14

大家早上好,我已经几个小时没有找到解决办法了。

我使用推送通知电容器插件(https://capacitor.ionicframework.com/docs/apis/push-notifications/)来收听从Firebase(通知和数据类型)向我推送通知,收听通知发生得非常好,即使在应用程序被杀死或在背景。

问题如下:

我想在收到通知时打开应用程序,如果它在后台或已被杀死。

>

如果在应用程序处于后台时收到通知,我可以强制应用程序保持backgroundMode处于活动状态(https://ionicframework.com/docs/native/background-mode)并在收到通知后将应用程序置于前台。(虽然我不太喜欢它,因为它需要消耗电池)

如果应用程序被杀死,我还没有找到解决问题的方法。

似乎没有办法钩住自定义代码,以便在后台收到推送通知或应用程序被终止时能够在推送通知到达时运行,您是否曾经遇到过此问题?

非常感谢。

共有3个答案

闻人嘉悦
2023-03-14

对我们来说,如果我们额外安装了iOS需要的FCM插件(https://github.com/capacitor-community/fcm),后台通知(即使在应用程序被杀死后)也可以工作。

仲孙向明
2023-03-14

我也有同样的问题,并用AndroidManifest中的以下行修复了它。xml

<meta-data android:name="com.google.firebase.messaging.default_notification_channel_id" android:value="@string/default_notification_channel_id" />
<service android:name="com.getcapacitor.CapacitorFirebaseMessagingService" android:exported="false"> <intent-filter> <action android:name="com.google.firebase.MESSAGING_EVENT" /> </intent-filter> </service>
叶坚
2023-03-14

我的解决方案是将:FCM_PLUGIN_ACTIVITY操作添加到AndroidManifest中。xml

        <activity
        ...
        android:name="com.appname.MainActivity"
        ...>

        ...
        ...
        ...

        <intent-filter>
            <action android:name="FCM_PLUGIN_ACTIVITY" />
            <category android:name="android.intent.category.DEFAULT" />
        </intent-filter>
    </activity>

此外,在服务器上,还应在推送通知对象中包含操作:

  const pushNotification = {
  data: {
    ...
  },
  notification: {
    body: body,
    title: title,
    click_action: 'FCM_PLUGIN_ACTIVITY',
  },
};

在您的爱奥尼亚项目中,您可以按如下方式处理PushNotificationAction,并导航到所需的路线:

  PushNotifications.addListener('pushNotificationActionPerformed',
  (notification: PushNotificationActionPerformed) => {
    console.log('Push action performed: ' + JSON.stringify(notification));
  }
);

要处理接收推送通知,在应用程序打开时,你应该处理pushNotificationRec在需要时显示自己的祝酒词。

// the app is open, show your own notification if needed
PushNotifications.addListener('pushNotificationReceived',
  (notification: PushNotification) => {
    console.log('push notification received: ' + JSON.stringify(notification));
  }
);
 类似资料:
  • 我正在尝试用远程通知处理所有可能的情况。当调用Foreground-DidReceiverEmoteNotification中的app时我就ok了。问题是当应用程序处于后台状态时,我收到推送通知。什么都不叫。如何让用户知道他有新的远程通知当应用程序回到前台?

  • iOS消息推送在工作灯,接收通知时,应用程序在后台作为徽章,但当我点击徽章也我得到有效载荷作为警报。我只需要徽章时,应用程序在后台运行。 实际上,我需要在应用程序位于前台时显示警报,如果应用程序位于后台,则显示徽章。在我的push received handler函数中,我正在检查这一点。但在ios中,只有当用户点击badge时,处理器函数get才会触发,而在Android中,当push收到时,处

  • 我有一个Sencha Touch Phonegap应用程序,需要处理推送通知。当应用程序未运行时,或在后台,通知到达时,用户点击通知,应用程序打开,并正确导航到Sencha Touch应用程序中的相应页面。 问题是当应用程序已经在前台时。 我也在这个应用程序中使用Urbanairship Library。在Urbanairship配置中,我必须指定用户点击通知时应打开的活动。 并且配置如下: 现在

  • 当应用程序在后台时,如何更新包含数据负载的Firebase推送通知?有没有办法在通知中指定通知id给Firebase API? 完整的项目在github https://github.com/akshatashan/FireBaseCloudMessagingDemo中

  • 所以我在firebase消息传递中经历了一个奇怪的行为。我在我的firebase messaging FCM调用中同时发送[通知]和[数据]对象,当应用程序在后台时,我可以接收到我调用FCM请求的多个推送通知。但现在的问题是,当我在打开应用程序时收到推送通知时,如果我点击了该通知,我将不再收到任何进一步的推送通知。 注意:如果我强行停止然后重新打开,我会再次开始收到通知。 我在几个安卓版本的安卓设

  • 我看了很多问题和答案为同一问题。 我现在知道的是 当应用程序是后台应用程序时,不会调用“DidReceiveEmotonification” DidReceiveEmotentification只在应用程序位于前台时调用,或者当用户点击应用程序位于后台的通知时调用 应用程序:didFinishLaunchingWithOptions:在用户点击通知打开应用程序(如果应用程序被终止)时调用 我的情况