作者lucasbard (路卡斯)
看板MacDev
标题[问题] 背景执行 Timer 的方法
时间Fri Apr 19 16:24:09 2019
大家好,目前在制作一个番茄时钟的APP,想要在 user 按下计时後,在前台或是後台,A
PP 都可以继续计时,然後时间到了,「通知」使用者专心时间到了
目前做好了使用者在前台的时候,一切都OK,也顺利把通知做成在前台能够显示
但是如果後台 (user按了home键),计时器就停止了
查了老半天,不知道该怎麽做好
git
https://github.com/lucasneverdie/VintageTomato
方式一.
开启 Capabilities 的 background mode ,在「Audio,AirPlay,and Picture in Pictur
e」打勾,这个方式在 Xcode的模拟器是可行的,但是手机上一样不会出来,失败
方式二.
使用 backgroundTaskIdentifier ,但这好像只是多争取一些时间,并不能长时间计时,
失败
方式三.
有人提到使用 「applicationDidEnterBackground」 然後再进入背景的时候,记录目前
时间,然後APP重新运行的时候再使用目前时间相减,然後再启动 Timer ,但是这样在背
景的时候一样没办法「通知」user 时间到了,失败
方式四.
这我自己预想的方式。
因为 Timer 无法在背景执行,但是 Schedule notification 然後设定秒数可以,那麽比
方进入背景的时候,Timer 暂停,把现在的 Timer 数值记录起来,建立一个新的Schedul
e notification 然後设定秒数,时间到了就会通知 user 时间到了,但是都没人提到这
样做,所以我预感应该是有什麽问题
市场上这麽多蕃茄时钟 APP ,居然好像没有简单的解决方式
麻烦指点迷津,谢谢
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 61.220.255.175
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/MacDev/M.1555662253.A.163.html
1F:→ kidd0717: 3 + 461.31.171.24 04/19 17:44
2F:→ shinrenpan: 最简单就是定时一个 local notificati 110.50.153.16 04/19 18:33
3F:→ ID3238: 3,进背景时,定时一个local notification211.76.47.143 04/19 21:15
4F:→ ID3238: 发送时间定在现在+倒数剩余时间211.76.47.143 04/19 21:37
5F:推 darktt: 进入背景的时候纪录下现在的时间,并且计220.133.234.121 04/19 21:44
6F:→ darktt: 算达时间的时间差,做成local notificatio220.133.234.121 04/19 21:44
7F:→ darktt: n,如果提早回到前景,那就比较现在时间与220.133.234.121 04/19 21:44
8F:→ darktt: 近背景的差距加到画面上,并且注销local n220.133.234.121 04/19 21:44
9F:→ darktt: otification220.133.234.121 04/19 21:44
10F:推 ID3238: 推darktt方法211.76.47.143 04/19 23:18
感谢
※ 编辑: lucasbard (61.220.255.175), 04/22/2019 10:53:28