文档章节

iOS Today Extension开发分享

王石头
 王石头
发布于 2016/07/22 20:46
字数 657
阅读 77
收藏 0

最近在做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
作品 0
石景山
程序员
私信 提问
iOS开发系列--App扩展开发

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/jianxin160/article/details/51834075 概述 从iOS 8 开始Apple引入了扩展(Extension)用于增强系统应用服务和...

KenshinCui
2016/07/05
0
0
Apple WatchKit 初探

Apple WatchKit 初探 2014/11/20 | 分类: IOS, 开发 | 0 条评论 | 标签: APPLE, APPLE WATCH 分享到:1 玩儿转Swift 玩转Bootstrap(基础) jQuery源码解析(架构与依赖模块) less即学即用...

andyhe91
2015/03/21
0
1
Extensions: Sharing Code with an Embedded FM

iOS 8 Extensions: Sharing Code with an Embedded Framework Note: Due to the NDA, this tutorial won’t include any screenshots from Xcode 6. When iOS 8 is released, I will update......

小春0618
2015/08/01
0
0
在使用pod管理iOS依赖的情况下,如何让app扩展也可以访问pod的库代码

一般iOS项目都会使用pod进行依赖管理, 现在呢又想增加一个app extension, 如果iOS 宿主app使用了某一个库, 在extension 比如today widget中 去访问使用这个库的时候却提示文件找不到。 怎么设...

grath
2015/05/23
569
0
简单介绍一个开发***的三方库吧,NEKit(swift)

因为最近上架了一个SkimTumblog需要链接*,所以对的需求很大。于是就想自己做一个**的iOS客户端。于是就开始Google,找到了以为大神开发的三方库,目前为止1.2k个star,支持iOS和macOS,功能...

笙语亦凉
2018/06/21
0
0

没有更多内容

加载失败,请刷新页面

加载更多

大数据教程(11.9)hive操作基础知识

上一篇博客分享了hive的简介和初体验,本节博主将继续分享一些hive的操作的基础知识。 DDL操作 (1)创建表 #建表语法CREATE [EXTERNAL] TABLE [IF NOT EXISTS] table_name [(col_name ...

em_aaron
今天
2
0
OSChina 周四乱弹 —— 我家猫真会后空翻

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @我没有抓狂 :#今天听这个# 我艇牛逼,百听不厌,太好听辣 分享 Led Zeppelin 的歌曲《Stairway To Heaven》 《Stairway To Heaven》- Led Z...

小小编辑
今天
2
0
node调用dll

先安装python2.7 安装node-gyp cnpm install node-gyp -g 新建一个Electron-vue项目(案例用Electron-vue) vue init simulatedgreg/electron-vue my-project 安装electron-rebuild cnpm ins......

Chason-洪
今天
3
0
scala学习(一)

学习Spark之前需要学习Scala。 参考学习的书籍:快学Scala

柠檬果过
今天
3
0
通俗易懂解释网络工程中的技术,如STP,HSRP等

导读 在面试时,比如被问到HSRP的主备切换时间时多久,STP几个状态的停留时间,自己知道有这些东西,但在工作中不会经常用到,就老是记不住,觉得可能还是自己基础不够牢固,知识掌握不够全面...

问题终结者
昨天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部