返回

拒绝程序被杀,只做受欢迎的 App

IOS

苹果近年来为优化用户使用体验,加入了不少“节能”机制,比如减少后台驻留进程、精准控制 location 服务、添加休眠应用等,为了降低这些机制对应用使用体验的影响,苹果一般会给开发者们一到三个月的时间来优化。

作为开发者,需要理解系统节能机制对用户体验的重要性,在苹果释放新系统的时候,对应用做一些适配,比如:

  • 优化后台定时任务,设置合理的调度间隔;
  • 避免长时间占用后台,尽量提高程序执行效率;
  • 多使用系统提供的静默推送能力,保证消息能够及时送达用户;
  • 理解系统后台行为与用户交互操作之间的关系。

如果我们的应用需要维持长时间后台运行,比如持续播放音乐的播放器应用,那么可以通过以下方式向系统申请权限:

  • info.plist 文件中添加 Required background modes 配置项,并选择合适的后台模式,向系统申请必要的后台运行权限;
  • 使用 backgroundTask API 来创建后台任务,并指定任务的超时时间。这样,系统会在后台任务超时之前唤醒我们的应用;
  • 使用 XPC 服务来实现后台功能。这样,我们的应用可以作为服务在后台运行,而不会被系统杀死;

如果我们的应用在后台被杀死,我们可以通过以下方式重新启动它:

  • 使用 launchd 服务来重新启动我们的应用。这样,我们的应用会在系统启动时自动启动;
  • 使用 UIApplication.shared.application.performSelector(: withObject: afterDelay:) 方法来重新启动我们的应用。这样,我们的应用会在指定的时间间隔后重新启动;
  • 使用 UILocalNotification 来重新启动我们的应用。这样,我们的应用会在指定的时间点收到本地通知,然后重新启动。

我们也可以通过以下方式来防止我们的应用在后台被杀死:

  • 使用 NSNotificationCenter 来注册 UIApplicationDidEnterBackgroundNotification 通知。这样,当我们的应用进入后台时,我们可以在收到通知后执行一些操作来防止它被杀死;
  • 使用 UIApplication.shared.application.applicationState 属性来判断我们的应用是否处于后台状态。如果我们的应用处于后台状态,我们可以执行一些操作来防止它被杀死;
  • 使用 Task Scheduler 来调度后台任务。这样,我们的应用可以在指定的时间间隔内执行任务,而不会被系统杀死。

以上是针对 IOS 13.2 系统更新而出现的应用后台频繁被杀问题的解决策略,希望对大家有所帮助。