iOS Today Extension开发分享
iOS Today Extension开发分享
王石头 发表于2年前
iOS Today Extension开发分享
  • 发表于 2年前
  • 阅读 54
  • 收藏 0
  • 点赞 0
  • 评论 0

新睿云服务器60天免费使用,快来体验!>>>   

摘要: 最近在做Today Extension,遇到一些需要注意的地方,把它们分享出来,供大家参考,希望可以帮助到其他人。这篇文章主要记录开发过程中需要注意的地方,在实现方面没有过多的讲述,需要的同学可以参考喵神的博客,下面附有博客地址。

最近在做Today Extension,遇到一些需要注意的地方,把它们分享出来,供大家参考,希望可以帮助到其他人。这篇文章主要记录开发过程中需要注意的地方,在实现方面没有过多的讲述,需要的同学可以参考喵神的博客,下面附有博客地址。

参考内容:

参考资料主要有两个,一是苹果的官方说明文档,建议大家详细阅读;二是喵神的博客,在实现方面说的比较详细,下面是资料的地址:

https://developer.apple.com/library/prerelease/content/documentation/General/Conceptual/ExtensibilityPG/ExtensionOverview.html#//apple_ref/doc/uid/TP40014214-CH2-SW2

https://onevcat.com/2014/08/notification-today-widget/

 

使用新建target的方式创建app extension,在info.plist中,使用 NSExtensionPointIdentifier key来标识 extension 类型。发布时不能直接将app extension上传至app store,只能将其的 containing app 上传至app store。

 

因为 app extension 与 containing app 是两个进程,如需共享数据,需要在Capabilities中开启 APP Groups 权限。

 

扩展中不能使用的API:

  1. sharedApplication 相关对象方法。
  2. 被标记为NS_EXTENSION_UNAVAILABLE或与该宏定义相似的对象、方法以及不可使用的framework(HealthKit、EventKit等)。
  3. 访问相机与麦克风。
  4. 执行长时间的后台任务。
  5. 使用AirDrop接受数据(可以发送数据)。

 

发布审核通过需注意事项(不遵守审核会被拒绝):

  1. app extension target 的 Architectures build settings 必须包含 arm64(iOS) 或者 x86_64(OS X)。
  2. app extension的containing app必须支持64-bit。
  3. 必须同时支持iPhone、iPad。
  4. 签名时必须使用相同的证书与描述文件。
  5. containing app必须向用户提供功能,不能够只包含扩展。
  6. extension引用的frameworks必须支持64位。
  7. Always choose “Frameworks” as your Copy Files build phase destination. If you instead choose the “SharedFramework” destination, the App Store will reject your submission.("copy file"中的"destination"需选择"Frameworks")

 

开发实践注意事项:

  1. 如果需要共用文件,可在project中新建framework类型target,如果iOS版本低于8.0可将framework设置为静态库,并在General中勾选“allow app extension APIs only”。
  2. 需要从today extension打开containing app时,调用[self extensionContext]方法获取NSExtensionContext对象,并调用NSExtensionContext对象的openURL:completionHandler:方法唤起containing app。
  • 打赏
  • 点赞
  • 收藏
  • 分享
共有 人打赏支持
粉丝 8
博文 24
码字总数 26001
×
王石头
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: