常见问题的处理方案 -- iOS8与OS X v10.10应用扩展编程指南精选.pdfVIP

常见问题的处理方案 -- iOS8与OS X v10.10应用扩展编程指南精选.pdf

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
常见问题的处理方案 -- iOS8与OS X v10.10应用扩展编程指南精选

常见问题的处理方案 -- iOS8/OS X v10.10应用扩展 编程指南 当你在开发一个应用扩展 ,让其执行某个任务时 ,你可能会遇到一些常见的 ,或者说在多种扩展中都会 出现的通用的问题 ,并且必须要处理这些问题。在这一章节中 ,我们将帮助你如何应对和处理这些常见 的问题。 使用内嵌框架共享代码 你可以创建一个内嵌框架 ,用于在应用扩展和它的载体应用之间共享代码。比如 ,你开发了一个图片滤 镜的照片编辑扩展 ,同时该扩展的载体应用也有这个功能 ,那么你就可以将实现该功能的代码封装成一 个框架 ,让扩展target和载体应用target都使用这个框架。 你要确保你创建的内嵌框架不包含应用扩展不能使用的API。这类API一般使用unavailability宏来标 记 ,比如像NS_EXTENSION_UNAVAILABLE。 如果你创建的内嵌框架中包含应用扩展不能使用的API ,那么你将其Link到载体应用没关系 ,载体应用 可以正常使用框架中的API ,但是不能与应用扩展共享代码 ,也就是应用扩展不能使用该框架提供的所 有API ,继而无法做到代码共享。如果你上传App Store的应用扩展中有这种框架 ,或者应用扩展中使用 了不允许使用的API ,那么审核时会被拒绝。 如果我们要想应用扩展使用内嵌框架 ,那么首先要配置一下。将target 的Require Only App-Extension-Safe API选项设置为Yes。如果你不这样设置 ,那么Xcode会向你提示 警告 :linking against dylib not safe for use in application extensions。 重要提示 :如果载体应用要使用内嵌框架 ,那么必须要支持arm64架构 ,否则在上传App Store时 会被拒绝。 (如“创建应用扩展”章节中介绍的 ,所有应用扩展都要支持arm64架构。 ) 在配置你的Xcode项目时 ,在Build Phases选项卡的Copy Files项中一定要将Destination设置 为Frameworks。 重要提示 :我们要始终将Destination设置为Frameworks,如果你将其设置为SharedFramework, 那么上传App Store时会被拒绝的。 你可以让载体应用支持iOS7或更早的版本 ,但当在iOS8或更新的版本中运行时 ,要特别注意内嵌框架 的安全性。详细内容可以参阅Deploying a Containing App to Older Versions of iOS。 有关创建和使用内嵌框架的更多内容 ,请观看WWDC 2014的视频“Building Modern Frameworks”。 与载体应用共享数据 虽然应用扩展的包内嵌在载体应用中 ,但是应用扩展和载体应用的安全域还是不一样的。默认情况下 , 应用扩展和载体应用是不能直接访问对方内容的。 不过你可以通过数据共享来实现这个愿望。比如 ,你希望应用扩展和它的载体应用共享一个单一的大数 据集。比如prerendered assets。 要实现数据共享 ,我们要使用Xcode或者开发者门户网站允许应用扩展和它的载体应用成为一个应用 组 ,然后在开发者门户网站中注册应用组 ,并指明在载体应用中使用该应用组。关于应用组的知识请查 阅Entitlement Key Reference文档的Adding an App to an App Group章节。 当你设置好应用组后 ,应用扩展和它的载体应用就可以通过NSUserDefaultsAPI共享访问用户的信息。 我们可以使用initWithSuiteName:方法实例化一个NSUserDefaults对象 ,然后传入共享组的标示符。比 如一个共享扩展 ,它或许会更新用户最近经常使用的共享账号 ,那么我们可以这样来写 : {% highlight swift %} // Create and share access to an NSUserDefaults object. NSUserDefaults *mySharedDefaults [[NSUserDefaults alloc] initWithSuiteName:@com.example.domain.MyShareExtension]; // Use the shared user defaults object to update the users account. [mySharedDefaults setObject:theAccountName forKey:@lastAccou

文档评论(0)

tazhiq2 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档