如何使iOS后台运行代码

如何使iOS后台运行代码

需求

最近在开发一个关于校园的项目,其中有这么一个需求:学生晚上8:00第一次打完卡后在当天夜晚11:00时需要再一次上传学生当前地理位置,判断是否还在宿舍(MMP防不胜防)。但是最后一次上传是不需要学生操作的,APP默默的执行。

mmp

注意:以下所有方法都只考虑APP没有被杀死,仅是在后台或者锁屏状态下。

iOS系统有这么一个机制:退到后台的APP可以有3分钟或者10分钟继续执行代码。如果想更长的时间允许你的代码,可以使用地理位置、后台播放无声音乐、VoIP。参考此链接iOS保持App真后台运行

地理位置刷新保持APP代码运行

当退到后台时开启地理位置刷新,每隔一段时间可以运行一下代码,然后又马上被挂起。所以整个过程是断断续续的,并且长时间保持APP后台地理位置刷新非常费电,用户估计会不允许。

后台播放无声音乐

这个可以让APP在后台处于运行状态,执行你想要的操作。但是这个有很大风险被拒。

静默推送

最后针对我们项目需求:在某个时间点如果APP没被主动杀死的情况下,发送静默推送唤醒APP执行上传地理位置操作。可以完美的解决。静默推送相关知识

    {
    "aps": {
        "content-available": 1,
        //"alert": "Test",
        //"badge": 1,
        //"sound": "default",
    }
    // 以下是自定义键值对
}

发送静默推送必须满足设置content-available: 1,alert、badge、sound这些值为空。

APP端:在application:didReceiveRemoteNotification:fetchCompletionHandler:方法中监听所接收到的静默推送。

你可能感兴趣的:(如何使iOS后台运行代码)