iOS 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。

转载于:https://my.oschina.net/wangshitou/blog/716416

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值