【问题标题】:iOS - How to detect uninstallation [duplicate]iOS - 如何检测卸载[重复]
【发布时间】:2019-03-13 22:14:43
【问题描述】:

我们的应用在 iOS 和 Android 上运行,并通过 Firebase 接收通知。

我们需要能够在用户卸载应用时立即检测到,以便我们可以通过其他方式(例如 SMS 或 SMTP)发送通知。

这对 Android 来说很好,因为我们可以在发送通知之前通过 Firebase Admin API 检测 App IID 是否仍然有效。

但这不适用于向 iOS 发送的通知。如果用户卸载,Firebase 仍然认为 App IID 有效,并将通知转发到 APN 网关(显然设备上没有任何显示,因为 App 已经消失)。

那么 - 服务器如何检测到 iOS 应用已安装?

谢谢。

【问题讨论】:

  • 在 iOS 中,无法检测到该应用已被卸载。
  • @BohdanSavych 你确定吗?因为在 FCM 文档中写到 If the client app is automatically unregistered, which can happen if the user uninstalls the application. For example, on iOS, if the APNs Feedback Service reported the APNs token as invalid. firebase.google.com/docs/cloud-messaging/…

标签: ios firebase firebase-cloud-messaging apn


【解决方案1】:

一句话回答您的问题:不。在 iOS 上无法检测到您的应用程序的卸载。

编辑:作为一种解决方法,您可以保存服务器上最后一个应用程序启动的日期以及它的时间。超过 30 天之前,您将该应用标记为“可能已卸载”。

【讨论】:

  • 所以这个问题的另一种说法是我希望能够检测到成功交付到设备(这里的成功包括必须安装应用程序的假设)。虽然这里的答案表明这是不可行的,但我注意到 WhatsApp 似乎能够做到这一点。如果您发送到未安装应用程序的平台,它只会给出一个灰色勾号。如果安装了应用程序,它会给出两个灰色勾号。关于如何检测这样的应用安装有什么建议吗?
  • @MHugh WhatsApp 也不会检测收件人是否安装了该应用程序。它仅检测收件人何时收到消息(通过向发件人发送一种确认)。你也可以这样做。但是您无法区分“用户已卸载应用”和“用户当前离线或无法访问”。
  • 我一直在考虑将确认发送回服务器。如果 App 在前台或后台(通过发送在 App 中触发 DidRecieveRemoteNotification 的数据通知),这可以正常工作,但是如果 App 没有运行,它似乎不可能做到这一点 - 尽管 WhatsApp 正在以某种方式做到这一点。如果应用程序没有运行,任何想法如何触发应用程序进行回调并确认?谢谢。
  • @MHugh 也许我把事情搞混了,但这不是很简单吗?应用程序处于前台或后台模式,收到消息并确认。如果您没有得到确认,则可能是该应用已被卸载,或者该应用尚未通过有效的互联网连接打开。
  • 例如设备开机后-App不在前台或后台。状态为“非运行”(应用程序尚未启动或正在运行但被系统终止)。另一个例子,当用户终止应用程序时。这既不是前景也不是背景。 WhatsApp 似乎能够在“未运行”时确认交付。关于它如何做到这一点的任何想法?
猜你喜欢
  • 2021-08-11
  • 1970-01-01
  • 2015-02-25
  • 2015-11-24
  • 1970-01-01
  • 2012-07-05
  • 2013-09-12
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多