【问题标题】:Firebase silent notification does not start up a closed iOS appFirebase 静默通知不会启动已关闭的 iOS 应用
【发布时间】:2018-10-18 20:41:48
【问题描述】:

FCM 静默通知能否启动已关闭的 iOS 应用?

Request Type: POST

Request URL: https://fcm.googleapis.com/fcm/send

Request Headers:

Authorization -> key=MY_KEY

Content-Type -> application/json

Request Body:

{
  "to": "/topics/my_topic",
  "content_available": true,
  "data": {
    "contentAvailable": 1
  },
  "priority": 10
}

但是,如果用户关闭此有效负载,它不会启动我的 iOS 应用程序。

如何让 iOS 在收到静默通知时启动我的应用程序?

【问题讨论】:

  • 您是否在 iPhone 上为您的应用程序启用了后台应用刷新?见this image。更多请看我的回答here
  • 我没有注意到你说的部分:用户关闭它。您的意思是用户按两次主页按钮并滑动应用程序并杀死它吗?在那种情况下,你什么也得不到。这是预期的行为。如果被暂停或处于后台状态,静默通知将打开您的应用程序。但不适用于用户终止的应用
  • 您可以做的是:将静默通知和用户通知结合在一起,即发送content_availabletrue,然后也发送警报,同时发出声音。如果应用程序没有被杀死,那么由于您使用的是content_available,那么它将打开应用程序......如果应用程序被用户终止,那么由于您发送警报,用户将看到通知并可以点击它并打开你的应用
  • 请指点我有关预期行为的官方文档。因为根据我的经验,Android 有不同的期望。
  • 关于结合静默通知和用户通知,我的通知应该根据用户的位置显示。所以我向所有用户发送一个静默通知,只有一部分用户实际通知,其他用户只是应用程序丢弃它。

标签: ios firebase push-notification apple-push-notifications firebase-cloud-messaging


【解决方案1】:

不启动应用程序是预期的行为。我的意思是为什么要这样做?用户出于某种原因决定终止该应用程序。他们不想再使用电池或带宽了!

来自documentation

使用此方法为您的应用处理传入的远程通知。 与 application(_:didReceiveRemoteNotification:) 方法不同,它 仅当您的应用程序在前台运行时调用,系统 当您的应用在前台运行时调用此方法或 背景。此外,如果您启用了远程通知 后台模式,系统启动您的应用程序(或将其从挂起状态唤醒)并在远程通知到达时将其置于后台状态。但是,如果用户强制退出,系统不会自动启动您的应用程序。在这种情况下,用户必须重新启动您的应用或重启设备,然后系统才会再次尝试自动启动您的应用


用于非静音通知。他们会被送到设备上。但不是应用程序。

如果您在 iPhone 上强制关闭您的 Whatsapp,而您的母亲向您发送了一条消息,那么您的 iPhone 会在其通知中显示它。但是它不会触发您的任何 AppDelegate 方法。 AppDelegate 方法仅在应用未被用户终止时触发。

【讨论】:

  • 作为一个小补充:有人可能想知道“嗯,‘系统启动你的应用程序’和‘如果用户强制退出应用程序’不会自动启动你的应用程序’是不是相互矛盾?” - 不,有一种情况会重新启动(技术上),但由于用户强制退出它并没有处于非活动状态:设备重新启动。重启后且用户至少解锁了一次设备后,收到的通知应该会启动应用程序(对于用户来说,这看起来就像它从未被终止过,尽管重启了)。诚然,这很难正确测试,但设计的行为。
  • @Gero 如果应用程序处于暂停状态,即用户单击主页并且没有任何后台活动并且几分钟过去了,它也会启动。这也是很常见的情况
  • 是的,当然也是如此(好一点:人们通常不理解暂停和背景之间的区别)。我只是想指出人们对应用程序未运行或被“终止”的常见误解。这两个术语都是模棱两可的,因为 iOS 区分“由于被用户杀死而未运行”和“由于重新启动或其他系统原因而未运行”。实际上,VOIP 应用程序甚至会在用户杀死 IIRC 后启动,所以也是如此。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-04-09
  • 2018-01-23
  • 1970-01-01
  • 2016-09-30
相关资源
最近更新 更多