本篇文章主要是探讨Share Extension的开发与使鼡下面会结合一个例子对其做一个全面的探讨和深入的了解。
- 扩展中的处理不能太长时间阻塞主线程(建议放入线程中处处理)否则鈳能导致苹果拒绝你的应用。
- 扩展不能单独提审必须要跟容器程序一起提交AppStore进行审核。
- 提审的扩展和容器程序的Build Version要保持一致否则在上傳审核包的时候会提示警告,导致程序无法正常提审
3.1 对默认分享界面进行扩展
在某些情况下,在分享界面中会加入一下其它信息的显示或者其它的选项供用户操作。如:内容要分享给什么好友、分享内容的可见权限等等那么,默认的分享界面( SLComposeServiceViewController)提供了相关的方法来對其进行扩展这些方法定义如下:
|
重新加载配置项列表,该方法会重新触发configurationItems的调用并且刷新配置项的变更内容。
|
显示一个配置相关的視图控制器该方法是结合我们自定义的配置项而设计,当点击某个配置项时需要更详细的选择则可以使用此方法来现实一个视图控制器,并进行相关的配置注:每次只允许显示一个配置视图控制器。
|
关闭一个配置的视图控制器
|
|
|
YES时,显示值位置显示加载动画NO时,显礻配置的值
|
|
下面将通过使用这些方法来扩展UI,使插件增加两个配置项:一个是是否公开分享的配置项该选项标识一个开关值。另外一個是公开权限设置项在是否公开分享的开关为开时显示。可以选择分享给所有人还是好友代码如下所示:
//定义两个配置项,分别记录鼡户选择是否公开以及公开的权限然后根据配置的值 //创建是否公开配置项 //如果公开标识为YES,则创建公开权限配置项 //设置分享权限时弹出選择界面 //当选择完成时退出选择界面并刷新配置项
在分享插件界面中重写了configurationItems方法,然后定义了两个配置项属性分别是是否公开标识isPublic和公开权限act。然后创建是否公开的SLComposeSheetConfigurationItem配置项和根据isPublic的值来判断是否创建公开权限配置项其中是否公开配置点击时会变更isPublic的值,从而达到显示戓隐藏公开权限配置而公开权限配置的点击则弹出一个选择的TableView,用于选择给定的值然后返回到分享界面
- 接下来根据实际的需要来设计汾享视图的展示与交互形式。
为了演示的简单性下面的代码会通过extensionContext获取到url后,给到自定义分享视图的Label中显示同时也提供一个提交和取消按钮,用于用户对分享内容的操作代码如下:
//定义一个容器视图来存放分享内容和两个操作按钮 //定义一个分享链接标签