美文网首页
ios程序内绕开AppStore安装应用程序

ios程序内绕开AppStore安装应用程序

作者: IMSk | 来源:发表于2016-08-31 10:37 被阅读3482次

    写在最前

          本人已经有长达两年多没有写过ios程序了的,本篇内容如有错误,请大家多见谅并指出问题~

    背景

          公司内部有很多产品线,开发完成后的app会打包上传到一个公司内部网站上,这里估计简称该站点为webmobile,如果同事想安装app,只需要电脑或者手机访问webmobile点击安装即可,这里需要说明一下的是这种打包方式用的是企业证书,安装是通过最后生成的plist来装的,如果不太了解这一点可以自行百度。但让人无法接受的是webmobile访问超慢。。。使用起来真是WTF。。。所以就想自己写了一个nativie app直接来安装程序。

    具体实现

    1.抓包分析webmobile的HTML ...这一步该文章省略... 

    2.把步骤1抓取的html转换成正常的UITableView来显示..这一步也忽略吧...

    3.安装实现  --- 折腾的重点

    尝试解决方案:

       1.大家知道ios有一个万能神器叫做openURL,so我尝试了一把打开‘itms-services://?action=download-manifest&url=https://...’ ,真机可以的~

      2.由于步骤1中抓包分析过程中用到了webview,所以想法是不是可以用webview来模拟跳转呢?~~真机可以的~

      3.前面两种其实都是通过openURL方式~不要折腾简单粗暴~闲来无事于是来到了思路三,我在背景中提到一点,大家是可以通过系统浏览器也就是Safari来点击安装程序,所以经常会遇到微信或者其他浏览器中提示用户,“用系统Safari打开此链接“,灵感来了的,ios 9中提供了SFSafariViewController,官方描述中也是说这种方式就是把链接直接交给app系统来处理逻辑,那换言之是不是也包括安装程序呢?so,立马测试了一把,帅,成功了的~不需要任何权限~撒花~~~

    let safariViewController = SFSafariViewController(url:  NSURL(string:"http://m.xyzs.com/app/100000234.html") as! URL)

    ctrl?.present(safariViewController, animated: true, completion: {})

      ok,那回到正题,如何才能实现我标题提到的内部安装呢?抓包下来的全是itms-services的scheme啊,而SFSafariViewController打开的确实需要一个合法的HTTP地址才可以。。。WTF~ 怎么办。。。灵感又来了的,既然没有HTTP地址,那咱能自己模拟一个么?答案当然是yes,本地起一个服务,done~

         1.启一个服务

         2.创建一个HTML

        3.点击tableview cell中的安装

       4.done

    总结

    绕开appstore其实不太符合处女座的苹果规范,但写这个工具不需要发布到市场,只是给公司内部员工使用~顺便提一下文章中用的截图都是我自己开发的一款非常使用的mac工具七牛图片上传神奇 一键截图上传返回地址~极力推荐大家使用~~~

    如果您愿意听我聊技术,可以关注我的个人公众号SKMacTalk:

    SKMacTalk

    相关文章

      网友评论

          本文标题:ios程序内绕开AppStore安装应用程序

          本文链接:https://www.haomeiwen.com/subject/wgyqettx.html