• 注册
当前位置:1313e > 默认分类 >正文

iOS 7 Bug:OTA 部署下出现“影子图标”

已知该问题只在 iOS 7.0+ 中存在。

问题重现:

1、同一个 app,使用 Product->Archive 菜单,用企业签名编译两次,编译出两个文件:app1 和 app2.ipa。它们的 BundleIdentifier 要分别设置为 xxx.xxx.app1 和 xxx.xxx.app2。

2、编写两个 .plist 文件:app1.plist 和 app2.plist。一个的 url 指向 app1.ipa,一个的 url 指向app2.ipa,但 Bundle Identifier 则统一为 xxx.xxx.app。也就是说,两个 .plist 文件除 url 部分外,其他都是相同的。app1.plist文件内容附后。

3、编写一个 html 页面:

  • 网络助手(app1,Bundle ID 一致)
  • 网络助手(app2,Bundle ID 不一致)

4、将 app1.ipa、app2.ipa、app1.plist、app2.plist 和 html 文件都放到服务器上。

5、在 iOS 7 设备上打开 html 页面,点击第一个链接,安装 app1.ipa。此时 app 正常安装。

6、再次打开 html 页面,点击链接2,安装 app2.ipa。由于在 app2 的描述文件(app2.plist)和 .ipa 包(app2.ipa)中的Bundle Identifier 不一致,安装成功后除了正常的 app 图标外, 还会多出一个特殊的图标,这个图标用户无法删除它,如下图所示:

这个无法删除的图标,我暂且称之为“影子图标”。影子图标无法用正常的手段进行删除。

解决办法:

1、先将上图中的“正常的 app 图标”删除,避免干扰。

2、再次点击 html 页面中的链接1,即安装 app1,这样描述文件和.ipa 的 Bundle ID就一致了,于是原来的影子图标删除,替换为“正常的app 图标”。

试试看,这个“正常的 app 图标”是可以删除的。

但是,如果 plist 文件的 BundleID 中包含了非法字符(比如空格),那么你就悲剧了。因为如果BundleID 中包含有非法字符,Xcode是无法编译的。如果发生这种情况,我能想到的唯一办法就是重置设备:-(

附:app1.plist

items

assets

kind

software-package

url

http://192.168.1.105:9999/app1.ipa

metadata

bundle-identifier

xxx.xxx.app1

bundle-version

1.0.0

kind

software

subtitle

网络助手

title

网络助手

将其中的 url 部分修改为如下内容即得到 app2.plist 文件:

url

http://192.168.1.105:9999/app2.ipa

 



本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 162202241@qq.com 举报,一经查实,本站将立刻删除。

最新评论

欢迎您发表评论:

请登录之后再进行评论

登录