为什么有的 iOS App 可以 programmatically 退出到后台(类似按 Home 键的效果),这是啥黑科技?

2015-11-01 15:38:11 +08:00
 cxz
比如最近很热门的调试工具 Surge ,通过 3D Touch 图标进行开关动作,它会进入 App 主界面,打开 /关闭功能,然后就自动退出(不是 crash ,而是有动画的),这是啥奇技淫巧,苹果有这种 api 吗?
3060 次点击
所在节点    iDev
12 条回复
Tink
2015-11-01 16:42:36 +08:00
能自动退出?
Smartype
2015-11-01 16:51:07 +08:00
不知道是不是这个,也不知道是不是黑科技。
[[UIApplication sharedApplication] suspend];
cxz
2015-11-01 17:14:00 +08:00
@Smartype 点赞 + 13800138000
Tony042
2015-11-01 18:05:20 +08:00
url scheme
ashamp
2015-11-01 22:02:55 +08:00
@Smartype 似乎是隐藏 api 啊 不能用吧
实测直接用会报错
[[UIApplication sharedApplication] performSelector:@selector(suspend)];
317765973
2015-11-02 09:47:36 +08:00
@Smartype 求继续跟进.
kobe1941
2015-11-02 10:16:07 +08:00
@ashamp 亲测可用,效果真实可靠(*^__^*) 嘻嘻……
aliao0019
2015-11-02 11:13:38 +08:00
这让我想到 Launcher 里面有个快捷方式是回到主屏幕,路径是 crash ……点了回到主屏幕它就先打开自己再 crash 掉,醉
daniellu
2015-11-02 17:01:50 +08:00
推荐用 UIControl
let control = UIControl()
control.sendAction('suspend', to: UIApplication.sharedApplication(), forEvent: nil)
Smartype
2015-11-02 17:10:30 +08:00
@daniellu 本质上没有区别,也就是混淆一下。不知道政策是什么样的。
你甚至可以扫描一遍 UIApplication 的 methods ,然后对每一个算一个 hash ,符合你要的 hash 就是那个。这样就看出来和这个 selector 之间的联系了。
不过以前看 360 就是 xor 一下 selector 。太明显啊。
个人建议就是不要搞这些不让搞的。没有什么实质意义,反而增加风险。喜欢搞这些可以去 jailbreak 社区嘛
daniellu
2015-11-02 17:22:09 +08:00
@Smartype 本质肯定都没什么区别啊,系统设计就是这样的。触法 app 的 suspend 消息而已。只是方式不同,上次查过为啥推荐 UIControl ,有点忘了……
不过,我们用是因为程序自动自我更新,企业版分发的企业应用。
free9fw
2015-11-08 14:48:19 +08:00
直接写个会 crash 的代码就直接闪退了

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/232700

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX