V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
iOS 开发实用技术导航
NSHipster 中文版
http://nshipster.cn/
cocos2d 开源 2D 游戏引擎
http://www.cocos2d-iphone.org/
CocoaPods
http://cocoapods.org/
Google Analytics for Mobile 统计解决方案
http://code.google.com/mobile/analytics/
WWDC
https://developer.apple.com/wwdc/
Design Guides and Resources
https://developer.apple.com/design/
Transcripts of WWDC sessions
http://asciiwwdc.com
Cocoa with Love
http://cocoawithlove.com/
Cocoa Dev Central
http://cocoadevcentral.com/
NSHipster
http://nshipster.com/
Style Guides
Google Objective-C Style Guide
NYTimes Objective-C Style Guide
Useful Tools and Services
Charles Web Debugging Proxy
Smore
cxz
V2EX  ›  iDev

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

  •  
  •   cxz · 2015-11-01 15:38:11 +08:00 · 3196 次点击
    这是一个创建于 3303 天前的主题,其中的信息可能已经有所发展或是发生改变。
    比如最近很热门的调试工具 Surge ,通过 3D Touch 图标进行开关动作,它会进入 App 主界面,打开 /关闭功能,然后就自动退出(不是 crash ,而是有动画的),这是啥奇技淫巧,苹果有这种 api 吗?
    12 条回复    2015-11-08 14:48:19 +08:00
    Tink
        1
    Tink  
       2015-11-01 16:42:36 +08:00
    能自动退出?
    Smartype
        2
    Smartype  
       2015-11-01 16:51:07 +08:00   ❤️ 1
    不知道是不是这个,也不知道是不是黑科技。
    [[UIApplication sharedApplication] suspend];
    cxz
        3
    cxz  
    OP
       2015-11-01 17:14:00 +08:00
    @Smartype 点赞 + 13800138000
    Tony042
        4
    Tony042  
       2015-11-01 18:05:20 +08:00
    url scheme
    ashamp
        5
    ashamp  
       2015-11-01 22:02:55 +08:00
    @Smartype 似乎是隐藏 api 啊 不能用吧
    实测直接用会报错
    [[UIApplication sharedApplication] performSelector:@selector(suspend)];
    317765973
        6
    317765973  
       2015-11-02 09:47:36 +08:00
    @Smartype 求继续跟进.
    kobe1941
        7
    kobe1941  
       2015-11-02 10:16:07 +08:00
    @ashamp 亲测可用,效果真实可靠(*^__^*) 嘻嘻……
    aliao0019
        8
    aliao0019  
       2015-11-02 11:13:38 +08:00
    这让我想到 Launcher 里面有个快捷方式是回到主屏幕,路径是 crash ……点了回到主屏幕它就先打开自己再 crash 掉,醉
    daniellu
        9
    daniellu  
       2015-11-02 17:01:50 +08:00
    推荐用 UIControl
    let control = UIControl()
    control.sendAction('suspend', to: UIApplication.sharedApplication(), forEvent: nil)
    Smartype
        10
    Smartype  
       2015-11-02 17:10:30 +08:00 via iPhone
    @daniellu 本质上没有区别,也就是混淆一下。不知道政策是什么样的。
    你甚至可以扫描一遍 UIApplication 的 methods ,然后对每一个算一个 hash ,符合你要的 hash 就是那个。这样就看出来和这个 selector 之间的联系了。
    不过以前看 360 就是 xor 一下 selector 。太明显啊。
    个人建议就是不要搞这些不让搞的。没有什么实质意义,反而增加风险。喜欢搞这些可以去 jailbreak 社区嘛
    daniellu
        11
    daniellu  
       2015-11-02 17:22:09 +08:00
    @Smartype 本质肯定都没什么区别啊,系统设计就是这样的。触法 app 的 suspend 消息而已。只是方式不同,上次查过为啥推荐 UIControl ,有点忘了……
    不过,我们用是因为程序自动自我更新,企业版分发的企业应用。
    free9fw
        12
    free9fw  
       2015-11-08 14:48:19 +08:00
    直接写个会 crash 的代码就直接闪退了
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   989 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 20:46 · PVG 04:46 · LAX 12:46 · JFK 15:46
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.