检测即将删除的iOS应用程序?

Wat*_*er7 28 iphone ios

对于我的iOS应用程序,当用户a即将删除应用程序时将触发什么事件?

Rem*_*hem 26

没有这样的事,抱歉.

您可以做的最好的事情是检查UIApplicationWillTerminateNotification通知,但更重要的是保存应用程序的状态(例如在服务器上),当它转换到后台并且交叉时,用户不会在应用程序未运行时删除它.因为一旦您的应用关闭,您就不再拥有任何控制权.

编辑:由于你想在删除应用程序时清除钥匙串的内容,我建议你看一下这个问题.基本上,一些答案所建议的是,删除时不会删除钥匙串的内容,而是在用户首次使用NSUserDefaults启动应用程序时.

编辑:Luis Ascorbe评论了一个想法:使用Push Notification的反馈服务(/sf/answers/553843181/)当然,这远非完美(并非所有用户都订阅了通知,通知令牌可能会失效)由于其他原因,等等)但这仍然需要考虑.

编辑:从iOS 10.3 Beta 2开始,删除应用程序时,钥匙串数据似乎不再保留.


小智 5

我们无法确切知道用​​户何时删除了应用程序。然而,我今天遇到了一种情况来检测特定于设备和用户的应用程序的卸载(只有在特定情况下才会知道)。

以下场景可能会帮助您需要根据用户和设备删除数据:如果您正在为您的应用程序使用 REST API 服务和身份验证,请确保执行此操作以跟踪它。

  1. 确保使用用户 ID 和设备标识符的组合作为主键来存储所有用户数据。
  2. 考虑每个用户的每个设备标识符的布尔值。
  3. 当用户登录应用程序时,进行服务调用并将服务器上该设备标识符和用户 ID 的 bool 设置为 true。
  4. 当用户注销应用程序时,进行服务调用并将该设备标识符和用户 ID 的 bool 设置为 false。注销时删除所有用户特定数据(来自设备和后端)(取决于您的业务逻辑)。
  5. 现在,如果用户再次登录并在未注销的情况下卸载应用程序,则布尔值将保留 true,并且所有相应的用户和设备特定数据都不会被删除。
  6. 当用户登录设备时,在将其更新为 true 之前检查该布尔值。如果它已经为真,则意味着同一用户已在该特定设备上卸载了此应用程序,并在同一设备上再次安装了它。

请注意,只有当您的应用程序中有服务调用并且最初存在一些身份验证时,此逻辑才有效。此外,只有当同一用户尝试登录同一设备时我们才能知道这一点。通过此逻辑无法得知其他用例中应用程序的卸载。

希望这种逻辑可以帮助某人,因为我们现在正在使用这种逻辑。我是新手。如果我错了,请指导。