React Native 写了个可以理解为定时爬虫的 App,获取到新数据时会向用户发送一个 Local Notification.
目前在 Android 上用 JobScheduler/AlarmManager 定时执行任务
因为可能有 iOS 的需求(我的主力机也是 iPhone ),考虑 build 一个 iOS 版本时发现 Background Task / Background Processing 相关的 API 并不能保证执行间隔
主要需求如下
- 执行间隔不需精确,类似 JobScheduler 一类实际 interval 为 1 ~ 2 倍是可以接受的
- 需要确保即使用户不打开 App,每天也至少执行 2 次左右
而查阅的各种文档和 stackoverflow 等均表示 Background App Refresh 不能保证执行间隔,如果用户不常打开 App,甚至可能一天里都不会执行
这是否意味着要保证相对精度,只能起一个服务器定时给用户发静默推送拉起 App 才行了?
EDIT:
- 爬虫逻辑不能放到服务器端执行,因为包含用户登录第三方网站的 cookie,可能有安全风险
- 大部分用户可能一天下来并不会有几次数据更新,但需要爬取的数据只会在源地址保留最新 20 次,等用户想起来打开 App 手动获取会有遗漏风险
