apicloud apicloud

注册
查看: 19238|回复: 34

[APP开发技巧] 【官方】iOS修改Info.plist

[APP开发技巧] 【官方】iOS修改Info.plist

19238 34 | 发表于 2015-10-29 12:32:21 |阅读模式 | |
本帖最后由 技术咨询-Kenny 于 2017-10-14 11:10 编辑

一、概述

iOS中很多功能需要配置Info.plist才能实现,如设置后台运行、支持打开的文件类型等。了解Info.plist中各字段及其含义,可以访问苹果开发网站相关文档,https://developer.apple.com/library/prerelease/ios/documentation/General/Reference/InfoPlistKeyReference/Introduction/Introduction.html#//apple_ref/doc/uid/TP40009248-SW1


二、配置

Info.plist是xml格式的文件,可以新建一个文本文件,修改内容后命名为Info.plist,然后将文件放置在widget网页包的res目录下,云编译时会将里面的内容添加到编译工程里面的Info.plist中。



三、示例

1、设置状态栏样式:
UIStatusBarStyle字段取值有UIStatusBarStyleDefault、UIStatusBarStyleBlackOpaque、UIStatusBarStyleBlackTranslucent,苹果官方文档:https://developer.apple.com/libr ... uid/TP40009252-SW14
  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>UIStatusBarStyle</key>
  6.     <string>UIStatusBarStyleDefault</string>
  7. </dict>
  8. </plist>
复制代码

2、配置3DTouch应用快捷菜单:

苹果官方文档:https://developer.apple.com/libr ... uid/TP40009252-SW36
  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>UIApplicationShortcutItems</key>
  6.         <array>
  7.                 <dict>
  8.                         <key>UIApplicationShortcutItemType</key>
  9.                         <string>com.mycompany.myapp.openfavorites</string>
  10.                         <key>UIApplicationShortcutItemTitle</key>
  11.                         <string>Favorites</string>
  12.                         <key>UIApplicationShortcutItemSubtitle</key>
  13.                         <string></string>
  14.                         <key>UIApplicationShortcutItemIconFile</key>
  15.                         <string>widget/image/open-favorites</string>
  16.                         <key>UIApplicationShortcutItemUserInfo</key>
  17.                         <dict>
  18.                                 <key>key1</key>
  19.                                 <string>value1</string>
  20.                         </dict>
  21.                 </dict>
  22.                 <dict>
  23.                         <key>UIApplicationShortcutItemType</key>
  24.                         <string>com.mycompany.myapp.newmessage</string>
  25.                         <key>UIApplicationShortcutItemTitle</key>
  26.                         <string>New Message</string>
  27.                         <key>UIApplicationShortcutItemIconType</key>
  28.                         <string>UIApplicationShortcutIconTypeCompose</string>
  29.                         <key>UIApplicationShortcutItemUserInfo</key>
  30.                         <dict>
  31.                                 <key>key2</key>
  32.                                 <string>value2</string>
  33.                         </dict>
  34.                 </dict>
  35.         </array>
  36. </dict>
  37. </plist>
复制代码

各字段解释:
  1. UIApplicationShortcutItemType:(必填)快捷菜单项的标识,一般为com.mycompany.myapp.myaction这种格式
  2. UIApplicationShortcutItemTitle:(必填)菜单标题
  3. UIApplicationShortcutItemSubtitle:(可选)菜单副标题
  4. UIApplicationShortcutItemIconType:(可选)使用系统提供的图标,可参考苹果文档里面列出的所有样式,注意有的只iOS9.1以后才生效。https://developer.apple.com/library/prerelease/ios/documentation/UIKit/Reference/UIApplicationShortcutIcon_Class/index.html#//apple_ref/c/tdef/UIApplicationShortcutIconType
  5. UIApplicationShortcutItemIconFile:(可选)使用自定义图标。图标必须单色的png格式图片,尺寸建议为105*105,这里需要把图片放在widget目录下面。指定了该项后将忽略系统图标项。
  6. UIApplicationShortcutItemUserInfo:(可选)自定义信息
复制代码

3、配置ATS(App Transport Security)

苹果官方文档:https://developer.apple.com/library/content/documentation/General/Reference/InfoPlistKeyReference/Articles/CocoaKeys.html#//apple_ref/doc/uid/TP40009251-SW33
以下是整个ATS配置的结构:
  1. NSAppTransportSecurity : Dictionary {
  2.         NSAllowsArbitraryLoads : Boolean
  3.         NSAllowsArbitraryLoadsForMedia : Boolean
  4.         NSAllowsArbitraryLoadsInWebContent : Boolean
  5.         NSAllowsLocalNetworking : Boolean
  6.         NSExceptionDomains : Dictionary {
  7.                 <domain-name-string> : Dictionary {
  8.                         NSIncludesSubdomains : Boolean
  9.                         NSExceptionAllowsInsecureHTTPLoads : Boolean
  10.                         NSExceptionMinimumTLSVersion : String
  11.                         NSExceptionRequiresForwardSecrecy : Boolean
  12.                         NSRequiresCertificateTransparency : Boolean
  13.                 }
  14.         }
  15. }
复制代码


各个字段解释:

  1. NSAllowsArbitraryLoads:

  2. 该字段对iOS9和iOS10都有效。如果设置为true,所有的ATS网络连接限制将失效,除了NSExceptionDomains字典里面单独配置的,默认为false。注意:设置为true后提交AppStore审核时需要理由。

  3. NSAllowsArbitraryLoadsForMedia:

  4. 该字段只在iOS10中有效。如果设置为true,使用AVFoundation框架加载媒体数据将不受ATS限制,但是应用剩余的其它部分网络请求还是受ATS约束,默认为false。注意:设置为true后提交AppStore审核时需要理由。

  5. NSAllowsArbitraryLoadsInWebContent:

  6. 该字段只在iOS10中有效。如果设置为true,使用webView加载网页将不受ATS限制,但是应用剩余的其它部分网络请求还是受ATS约束,默认为false。注意:设置为true后提交AppStore审核时需要理由。

  7. NSAllowsLocalNetworking:

  8. 该字段只在iOS10中有效。如果设置为true,允许加载本地资源,但是应用剩余的其它部分网络请求还是受ATS约束,默认为false。


  9. NSExceptionDomains:

  10. 为指定的域名单独配置ATS,下面是其里面的子项各字段:

  11.         NSIncludesSubdomains:
  12.         
  13.         如果设置为true,ATS配置也将适用于其所有的子域名,默认为false。

  14.         NSExceptionAllowsInsecureHTTPLoads:
  15.         
  16.         如果设置为true,允许加载该域名的http资源,默认为false。注意:设置为true后提交AppStore审核时需要理由。

  17.         NSExceptionMinimumTLSVersion:
  18.         
  19.         指定连接时允许使用的最小的TLS版本,默认值为TLSv1.2,取值范围为:TLSv1.0、TLSv1.1、TLSv1.2。注意:使用该字段时提交AppStore审核时需要理由。

  20.         NSExceptionRequiresForwardSecrecy:
  21.         
  22.         如果设置为false,将允许不支持perfect forward secrecy (PFS)的加密,默认为true。

  23.         NSRequiresCertificateTransparency:
  24.         
  25.         如果设置为true,服务端需要具有有效的Certificate Transparency,默认为false。
复制代码


1)、开启ATS,不允许所有http请求
  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>NSAppTransportSecurity</key>
  6.     <dict>
  7.         <key>NSAllowsArbitraryLoads</key>
  8.         <false/>
  9.     </dict>
  10. </dict>
  11. </plist>
复制代码

2)、开启ATS,为指定域名开放http请求
  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>NSAppTransportSecurity</key>
  6.     <dict>
  7.         <key>NSAllowsArbitraryLoads</key>
  8.         <false/>
  9.         <key>NSExceptionDomains</key>
  10.         <dict>
  11.             <key>localhost</key>
  12.             <dict>
  13.                 <key>NSExceptionAllowsInsecureHTTPLoads</key>
  14.                 <true/>
  15.             </dict>
  16.         </dict>
  17.     </dict>
  18. </dict>
  19. </plist>
复制代码







本帖子中包含更多资源    您需要 登录 才可以下载或查看,没有帐号?立即注册

主题:
14
帖子:
111
云币:
221
发表于 2016-1-5 11:48:45 |
完全 不懂 ,官方有没有一个详细一点的 info.plist的demo     对于不是 app开发的人来说这个 弄起来是有点麻烦

主题:
16
帖子:
56
云币:
288
发表于 2016-10-6 17:00:18 |
感谢分享,终于知道可以自己写info.plist了
发表于 2019-5-5 15:51:22 |
zhangcan1168 发表于 2019-5-5 15:39
我确实在云编译界面添加了,但是还是被拒了。  我ios版本用的是api.startLocation()和aMap来实现定位,并 ...

说明是你填写的描述不对,没有说明定位的用途是干嘛的。可以参考下别的应用怎么写的。

主题:
12
帖子:
117
云币:
384
发表于 2015-11-3 09:54:56 |
感谢分享,终于知道可以自己写info.plist了

主题:
12
帖子:
27
云币:
268
发表于 2015-11-7 20:03:51 |
您好,在自定义了plist后,提交app的时候报错,请问该如何处理?,已经测试过,删除了自定义的plist,没有报错

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
发表于 2015-11-8 10:03:02 |
banner 发表于 2015-11-7 20:03
您好,在自定义了plist后,提交app的时候报错,请问该如何处理?,已经测试过,删除了自定义的plist,没有 ...

重新编译一下试试

主题:
12
帖子:
27
云币:
268
发表于 2015-11-8 10:26:38 |

您好,第一条报错没有了,现在只有第二条 90149

主题:
12
帖子:
27
云币:
268
发表于 2015-11-8 10:57:19 |

是我配置的问题,已解决,感谢

主题:
39
帖子:
198
云币:
1313

女朋友强者王者不觉明厉APICloud粉丝老司机

发表于 2016-2-24 14:28:14 |
郑晓 发表于 2016-1-5 11:48
完全 不懂 ,官方有没有一个详细一点的 info.plist的demo     对于不是 app开发的人来说这个 弄起来是有点 ...

arrow

主题:
58
帖子:
177
云币:
256
发表于 2016-5-26 16:52:54 |
应用内跳转到iPhone的“设置-隐私-定位服务”该怎么修改?没搞过这个 苹果的还都英文 能指点下吗

主题:
58
帖子:
177
云币:
256
发表于 2016-5-30 11:04:12 |
为什么构建版本报错了 ,apploader的时候没错!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
1234下一页
您需要登录后才可以回帖 登录 | 立即注册

快速回复 返回顶部 返回列表