当前位置:   article > 正文

越狱iOS设备利用itms-services协议,实现Safari一键安装IPA_ios ipa文件下载如何自动安装

ios ipa文件下载如何自动安装


JUL 14TH, 2012 | COMMENTS

利用MobileInstallation实现IPA程序安装后,最近有网友问起同步推、91等在线一键安装APP的实现,于是这两天抽了时间研究了一下。一开始以为可以通过调用MobileInstallation Framework来安装,仔细想想后,实在不可能通过一网页调用到系统级文件,更别说调用系统私有库里面的方法来安装。最后只好从同步推等网站入手。

此处先描述一下同步推在线一键安装的流程:

  1. 先用iPhone上的Safari打开同步推,可以看到在线安装的按钮,同时网站也给出了一键安装的条件:安装要求:已越狱,并安装了appsync!如下图示:

  2. 点击在线安装后,弹出一个UIAlertView,提示

    “tui.tongbu.com”要安装“同步推1.12(需越狱)online”

  3. 点击弹出对话框的安装后,系统自动退回桌面,这时可以看到同步推开始下载并自动安装。

以上便是同步推在线一键安装的基本操作流程,不难看出,关键代码应该是在点击在线安装后,网站执行了某个方法后弹出安装提示框。查看网页源代码可以看到在线安装这个位置代码如下:

1
2
  1. <a style=" top:0px; left:385px;" class="online" href="javascript:void(0);" title="同步推"
  2. lurl="http://t.tongbu.com/tbtui/tbtui_v1.12.ipa" onclick="return install(this);">点此安装</a>

明显点击后,调用了方法install,继续往下则看到install方法的代码:

1
2
3
4
5
6
7
8
9
10
11
12
  1. install = function(_target) {
  2. if (lDGyJ1 == 0) {
  3. return tbapi_autodl(_target);
  4. }
  5. else {
  6. var gjH_kaqzV1 = "\x68\x74\x74\x70\x3a\x2f\x2f\x73\x65\x72\x76\x65\x72\x2e\x74\x6f\x6e\x67\x62\x75\x2e\x63\x6f\x6d\x2f\x63\x6c\x6f\x75\x64\x2f\x64\x6f\x77\x6e\x61\x70\x70\x2e\x61\x73\x70\x78";
  7. if (request("\x63\x68\x61\x6e\x6e\x65\x6c") != null)
  8. { gjH_kaqzV1 = gjH_kaqzV1 + "\x3f\x63\x68\x61\x6e\x6e\x65\x6c\x3d" + request("\x63\x68\x61\x6e\x6e\x65\x6c") };
  9. $('\x23\x64\x6f\x77\x6e\x46\x72\x61\x6d\x65')["\x61\x74\x74\x72"]("\x73\x72\x63", gjH_kaqzV1);
  10. return false;
  11. }
  12. }

上述代码被简单加密过,解密后如下

1
2
3
4
5
6
7
8
9
10
11
12
  1. install = function(_target) {
  2. if (lDGyJ1 == 0) {
  3. return tbapi_autodl(_target);
  4. }
  5. else {
  6. var gjH_kaqzV1 = http://server.tongbu.com/cloud/downapp.aspx;
  7. if (request(channel) != null)
  8. { gjH_kaqzV1 = gjH_kaqzV1 + ?channel= + request(channel) };
  9. $(#downFrame)[attr](src, gjH_kaqzV1);
  10. return false;
  11. }
  12. }

lDGyJ1是什么呢?往前一点有这么一段代码:

1
2
3
4
5
6
  1. var lDGyJ1 = 0;
  2. var zfd2 = navigator[userAgent][toLowerCase]();
  3. if (zfd2[indexOf](iphone) > 0 || zfd2[indexOf](ipod) > 0 ||zfd2[indexOf](ipad) > 0 || zfd2[indexOf](symbianos) > 0 || zfd2[indexOf](ios) > 0)
  4. {
  5. lDGyJ1 = 1;
  6. }

没错网站正是通过判断当前浏览器userAgent,用lDGyJ1来标记当前浏览器是否为iOS设备。

install方法中,当lDGyJ1不为0时(即当然为iOS设备),则跳转至:

http://server.tongbu.com/cloud/downapp.aspx?channel=channel

在浏览器输入上述网址,发现又跳转到:

itms-services://?action=download-manifest&url=http://tui.tongbu.com/channel/tbtui_v1.12_online.plist

上述地址正是一键安装玄机所在,而核心则是itms-services协议跟plist配置文件。

itms-services协议实际上常用于iOS企业应用的无线部署,详见这里!

plist配置文件实为一个xml清单文件,其内容大概如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
  3. <plist version="1.0">
  4. <dict>
  5. <key>items</key>
  6. <array>
  7. <dict>
  8. <key>assets</key>
  9. <array>
  10. <dict>
  11. <key>kind</key>
  12. <string>software-package</string>
  13. <key>url</key>
  14. <string>http://t.tongbu.com/tbtui/channel/tbtui_v1.12_online.ipa</string>
  15. </dict>
  16. <dict>
  17. <key>kind</key>
  18. <string>display-image</string>
  19. <key>needs-shine</key>
  20. <true/>
  21. <key>url</key>
  22. <string>http://www.tongbu.com/logo/tui48.png</string>
  23. </dict>
  24. </array>
  25. <key>metadata</key>
  26. <dict>
  27. <key>bundle-identifier</key>
  28. <string>com.tongbu.tbtui</string>
  29. <key>bundle-version</key>
  30. <string>1.12</string>
  31. <key>kind</key>
  32. <string>software</string>
  33. <key>subtitle</key>
  34. <string>同步网络</string>
  35. <key>title</key>
  36. <string>同步推1.12(需越狱)online</string>
  37. </dict>
  38. </dict>
  39. </array>
  40. </dict>
  41. </plist>

至此,我们只要稍稍修改上面的plist文件,便可实现自己的一键安装。需要修改的地方主要有:

  1. <key>assets里两个url,即software-packagedisplay-image的URL,前者是所要安装的IPA地址,后者是安装时桌面显示的图标。

  2. <key>metadata里主要修改bundle-identifierbundle-version,具体是什么就不用介绍了,但是要注意一定要跟所安装的IPA包内容一致,不然无法安装成功。另外可以修改titlesubtitle,定制安装时弹出框的内容。


以上内容纯属学习研究,您可以随意地转载本站的文章,但须注明来源及本站链接,不可以将本站文章商业化使用,或者修改、转换或以本作品为基础进行创作。

版权所有 © 2012 转载本站文章请注明:转载自Kryhear

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/煮酒与君饮/article/detail/746144
推荐阅读
相关标签
  

闽ICP备14008679号