㈠ 如何为iOS设备开发通用的应用程序
当首次引进iphone的时候,开发人员并没有关注于创建一个简单的代码库以使能够运行在多重设备上。没有其它的设备。在iPodTouch进入市场的时候,界面-尺寸和分辨率-几乎是等同于第一代的iPhone。开发、编译以及发布与这两个设备兼容的通用应用程序是非常简单的。如今,开发一套能够在所有设备上运行的简单应用程序并不会太难。
过程步骤AppleXcode使得通用二进制代码的编码变得很简单,但没有实现自动化。需要一点附加的工作-规划和编码阶段均需要-以使得生成可扩张的通用应用程序。开发一个通用的应用程序的第一步是从设备菜单中选择通用选项。Xcode会为iPhone、iPod以及iPad设备使用代码创建一项目。创建了两个故事板文件并将其附加到通用项目中。其中一个故事板文件支持iPhone和iPod设备的屏幕尺寸和分辨率,而另外一个故事板文件要独属于设备产品中的iPad家族系列。
图A除了设备-独有的故事板文件之外,一个通用的项目会包括两个单独的区域用于单独地控制每个类型设备的配置设置。被支持的方向、应用程序图标以及登录图片由在项目设置下面的概要标签的不同部分内进行管理。
图B图C图D正如您所看到的,Xcode具有用于开发通用应用程序的内置的支持。如果开发人员的意图是维持所有设备的一般体验,那么只需遵循在每个故事板上的相同的设计和流型,编译然后运行即可。然而如果有必要在每一个设备上具有不同的体验,就会需要额外的编码。
在iOS编程指南的高级应用程序技巧部分,Apple使用了开发在iPad设备中的横向和在iPhone以及iPod设备中的纵向上支持登录的通用应用程序的例子。Info.plist是使用元数据控制iOS应用程序某些方面的非常有效的方式。将特定键附加到Info.plist文件上是控制代码库之外的参数的一种简单又可扩展的方法。可以参考一下列表键引用,以获得在Info.plist文件中可以定义的参数的一览表。
在Info.plist文件内部的一组名称/数值结构如下:
keyUserInterfaceOrientation//string该key标签识别属性,string标签附上数值。在上面的例子中,由我们的通用应用程序支持的每一个设备都将以横向模式启动。为了针对一个特定的设备,我们将这三个设备类型的其中一个附到键上。举例来说,如果我们需要让iPhone设备以纵向模式启动,我们应当将以下的代码加到Info.plist文件中:
keyUserInterfaceOrientation-iphone//string可接受值为iphone,ipad以及ipod。
越过界面有时候需要创建条件代码路径以支持设备-独有的功能。Apple包含了用于容易地测定当前设备类型的宏。UI用户界面惯用语宏是UIKit框架的一部分,可供所有的应用程序使用。如果该设备是iPad,那么从该宏中返回的值将会是UIUserInterfaceIdiomPad。如果该设备是iPhone或是iPodTouch,返回的值则是UIUserInterfaceIdiomPhone。
If==UIUserInterfacePhone){//PlaceiPhone/iPodspecificcodehere...}else{//PlaceiPad-specificcodehere...}开发人员一直在不
2012经典语录
断地寻找使开发iOS应用程序所需要的代码数量最小化的方法。其中一个方法当然是维护用于再使用的类别、方法和函数的程序库。考虑在通用应用程序中用到这些类别的可能性是非常重要的。考虑到这一点,您应当在必要时使用条件代码路径开发类别。
最终想法开发通用应用程序有利有弊。从维护和支持的角度来看,更易于管理代码库。同时,一个通用的应用程序方法意味着单一发行-升级和补丁-同时覆盖所有的设备。然而商业需求可能会推翻开发和发布通用应用程序的可行性。有时候对iPhone应用程序和为iPad发布的相同应用程序采取不同的价格点可能会更合适。目前,应用程序商店对每一个应用程序仅支持一种价格。
㈡ 初次使用七牛云存储,请问这是什么问题
使用七牛云存储解决ios7.1的app部署问题
一.问题描述
开发完ios版本的app。需要将.ipa文件和.plist文件打包上传,供用户下载,在线安装。用户安装过程简单描述如下:
首先通过手机浏览器safari或者扫描二维码获取到下载.plist的地址。然后浏览器会自动跳转到这个地址,下载、读取.plist。(用户跳转的地址是.plist的下载地址。)这个过程,显然使用http协议来下载.plist文件。最后,iphone通过读取.plist文件中配置的.ipa下载地址,来安装.ipa文件,来完成ios版本的app。
举例,网站首页中,下载.plist的代码:
<ahref="itms-services://?action=download-manifest&url=http://www.ekwing.com/ekwing.plist"class="mobile-ios"></a>
但是,苹果从ios7.1开始,用户安装app,需要使用https协议,来下载plist文件。也就说,在安装app的第一步,下载.plist文件,需要使用https协议。https协议如下:
这里不详细描述https协议。HTTPS的信任继承基于预先安装在浏览器中的证书颁发机构(如VeriSign、Microsoft等)(意即“我信任证书颁发机构告诉我应该信任的”)。因此,一个到某网站的HTTPS连接可被信任,当且仅当:
1. 用户相信他们的浏览器正确实现了HTTPS且安装了正确的证书颁发机构;
2. 用户相信证书颁发机构仅信任合法的网站;
3. 被访问的网站提供了一个有效的证书,意即,它是由一个被信任的证书颁发机构签发的(大部分浏览器会对无效的证书发出警告);
4. 该证书正确地验证了被访问的网站(如,访问https://example时收到了给“Example Inc.”而不是其它组织的证书);
5. 或者互联网上相关的节点是值得信任的,或者用户相信本协议的加密层(TLS或SSL)不能被窃听者破坏。
简单描述,用户使用https来下载.plist文件。则需要网站支持https协议。支持https协议,除了服务端做一些配置外,还需要申请一个数据签名证书。这个签名证书是由签发机构签发的。不能自己配置生成。而申请签名证书需要一段时间。而我们的目的只是希望能够让我们的app被用户正常下载安装即可。
二.问题分析
解决该问题,就2个方法:
1.自己网站服务上配置https服务,并购买数字签名证书以保证每种类型及其不同版本的浏览器能够安装了证书颁发机构颁发的,我们购买的数据签名证书。时间开销7天左右。
2.将app文件托管到支持https协议的第三方服务器上。
三.解决问题
使用七牛云存储,可以快速,免费解决这个问题。只需要到http://www.qiniu.com/注册一个账号。然后,开通https协议的域名即可。最后将.plist和.ipa文件上传到七牛云存储上即可。操作过程,非常简单。只要注意几点:
1. 开通一个http协议的域名,和一个https协议的域名。
如上图。后缀名是.qiniudn.com的是支持http协议的域名。后缀名是.qbox.me的是支持https协议的域名。上传.plist、.ipa到七牛云存储。
2. 修改下载.plist文件的地址,修改.plist文件内容。
网站首页,下载.plist地址改成上传到七牛云存储上的支持https协议(域名后缀名是.qbox.me)的下载链接地址。
<ahref="itms-services://?action=download-manifest&url=https://dn-ekwing.qbox.me/ekwing.plist"class="mobile-ios"></a>
3. 将.plist文件内容中,.ipa的下载地址,改成七牛云存储上的支持http协议(后缀名是.qiniudn.com)
<string>http://ekwing.qiniudn.com/ekwing.ipa</string>
4. 总结,.plist的下载用https协议,而.ipa的下载用http协议即可。修改完后,就可应用ios6、ios7、ios7.1进行测试了。
四. 感谢七牛云存储
感谢七牛运存储提供免费服务。不过,目前防盗链还不能用。希望能够加上防盗链功能。
五. 因ios7.1安装app,需要用https协议而提示的错误
无法安装应用程序因为证书无效
<Warning>:[ERROR]: Cannot load non-https manifest URL:http://192.168.1.22/ekwing.plist
<Warning>:Could not load download manifest with underlying error: ErrorDomain=SSErrorDomain Code=128 "无法连接" UserInfo=0x1669d990 {NSLocalizedDescription=无法连接}
<Warning>: NSURLConnection/CFURLConnection HTTP loadfailed (kCFStreamErrorDomainSSL, -9813)
<Warning>: Could not load download manifest withunderlying error: Error Domain=NSURLErrorDomain Code=-1202 "无法连接到商店" UserInfo=0x166bc640{NSLocalizedDescription=无法连接到商店,NSLocalizedRecoverySuggestion=您仍要连接此服务器吗?,NSLocalizedFailureReason=无法建立安全连接。请检查“日期与时间”设置。,NSErrorFailingURLStringKey=https://192.168.1.22/ekwing.plist,NSUnderlyingError=0x165b37e0 "此服务器的证书无效。您可能正在连接到一个伪装成“192.168.1.22”的服务器,这会威胁到您的机密信息的安全。",=<SecTrustRef:0x166b83e0>,NSErrorFailingURLKey=https://192.168.1.22/ekwing.plist}