天天看點

iOS8新特性擴充(Extension)應用之二——分享插件

      在iOS8之前,除了一些主流的社交平台,例如蘋果支援内容分享外,其他開發者的應用若要加入分享的功能,将會十分的複雜。在iOS8的新特性中,apple為我們準備了這樣的擴充功能。

首先建立工程,在我們的工程中建立一個Target:

iOS8新特性擴充(Extension)應用之二——分享插件

之後,模闆中會為我們建立一個controller類,這個controller用于控制我們的分享插件,裡面内容:

<a href="http://my.oschina.net/u/2340880/blog/485656#">?</a>

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

<code>@implementation ShareViewController</code>

<code>//這個函數用于判斷分享内容的可用性,我們在其中擷取分享的内容進行檢查</code>

<code>- (</code><code>BOOL</code><code>)isContentValid {</code>

<code>    </code><code>// Do validation of contentText and/or NSExtensionContext attachments here</code>

<code>    </code><code>return</code> <code>YES;</code>

<code>}</code>

<code>//點選post按鈕後出發的方法,我們可以在這裡将分享的内容進行上傳等操作</code>

<code>- (</code><code>void</code><code>)didSelectPost {</code>

<code>    </code><code>// This is called after the user selects Post. Do the upload of contentText and/or NSExtensionContext attachments.</code>

<code>    </code> 

<code>    </code><code>// Inform the host that we're done, so it un-blocks its UI. Note: Alternatively you could call super's -didSelectPost, which will similarly complete the extension context.</code>

<code>    </code><code>[self.extensionContext completeRequestReturningItems:@[] completionHandler:nil];</code>

<code>//這裡用于設定分享插件的附件按鈕</code>

<code>- (NSArray *)configurationItems {</code>

<code>    </code><code>// To add configuration options via table cells at the bottom of the sheet, return an array of SLComposeSheetConfigurationItem here.</code>

<code>    </code><code>return</code> <code>@[];</code>

<code>@end</code>

除此之外,還有一些常用的屬性:

- (void)presentationAnimationDidFinish;

彈出視圖動畫結束後執行的方法

@property (readonly, NS_NONATOMIC_IOSONLY) NSString *contentText;

分享的内容文字

@property (copy, NS_NONATOMIC_IOSONLY) NSString *placeholder;

預設顯示的提示文字

- (void)didSelectCancel;

取消按鈕執行的方法

我們在代碼中如下添加後運作:

<code>-(NSString *)placeholder{</code>

<code>    </code><code>return</code> <code>@</code><code>"提示文字"</code><code>;</code>

<code>    </code><code>SLComposeSheetConfigurationItem * item =[[SLComposeSheetConfigurationItem alloc]init];</code>

<code>    </code><code>item.title=@</code><code>"地點"</code><code>;</code>

<code>    </code><code>item.value=@</code><code>"城門"</code><code>;</code>

<code>    </code><code>return</code> <code>@[item];</code>

我們用系統的相冊做測試,點選相片的分享按鈕:

iOS8新特性擴充(Extension)應用之二——分享插件

點選MORE,添加我們的擴充插件。

iOS8新特性擴充(Extension)應用之二——分享插件

這時分享欄中多了一個我們的插件,點選效果如下:

iOS8新特性擴充(Extension)應用之二——分享插件

還有一點我們需要了解,在這個擴充的plist檔案中,有這樣一個鍵:NSExtensionAttributes,裡面有一個NSExtensionActivationRule的字典,其中可以設定一些鍵值,對分享插件的屬性進行控制。

iOS8新特性擴充(Extension)應用之二——分享插件

這些鍵的寫法在官方文檔中的介紹如下:

iOS8新特性擴充(Extension)應用之二——分享插件

這些鍵的意義,文檔中介紹的很清楚,我們可以根據需要進行設定。

繼續閱讀