2014-10-18 114 views
3

嗨,我正在開發一個社交網絡應用程序。因爲我需要使用擴展名來分享我的應用程序API。我正在開發我的應用程序目標C而不是斯威夫特。任何機構都可以幫助我解決這個問題。在ios8中使用共享擴展共享圖像

+0

你可以說你是如何獲得的形象呢? – Yohan 2015-04-23 09:29:34

回答

4

創建目標C一個共享擴展

  1. 應用程序擴展名必須有一個包含應用程序 - 你不能只是建立一個應用程序擴展,從商店下載,首先創建一個普通的應用程序包含了應用擴展程序 爲了演示的目的,只需創建一個新的單視圖項目並保持原樣。 前往文件 - >新建 - >項目並選擇單視圖應用程序下iOS - >應用程序稱之爲'ExtendableApp'。

  2. 轉到文件 - >新建 - >目標,並選擇下的iOS 分享擴展 - >應用程序擴展稱之爲「myShareExtension」這將份額擴張對象添加到您的項目。

  3. 擴展ShareViewController繼承自SLComposeServiceViewController,它已經有一個帶有文本框,圖像視圖和'取消'和'發佈'按鈕以及像字符數,配置,內容驗證等其他功能的視圖。

    如果你想創建自定義體驗,只需將你的ShareViewController設置爲從UIViewController繼承,一旦你的擴展被激活,所有常規的viewDidLoad,viewDidAppear等都會被調用。

在安裝您的應用程序包含你將已經能看到「myShareExtension」在UIActivityViewController菜單

獲取共享的UIImage

在你ShareViewController.mm在viewDidAppear使用下面這後一點以獲取圖像

-(void)viewDidAppear:(BOOL)animated 
{ 
    for (NSItemProvider* itemProvider in ((NSExtensionItem*)self.extensionContext.inputItems[0]).attachments) 
    { 
     if([itemProvider hasItemConformingToTypeIdentifier:@"public.image"]) 
     { 
      [itemProvider loadItemForTypeIdentifier:@"public.image" options:nil completionHandler: 
       ^(id<NSSecureCoding> item, NSError *error) 
       { 
        UIImage *sharedImage = nil; 
        if([(NSObject*)item isKindOfClass:[NSURL class]]) 
        { 
         sharedImage = [UIImage imageWithData:[NSData dataWithContentsOfURL:(NSURL*)item]]; 
        } 
        if([(NSObject*)item isKindOfClass:[UIImage class]]) 
        { 
         sharedImage = (UIImage*)item; 
        } 
       }]; 
     } 
    } 
} 

注意 - 此代碼是僅適用於惡魔擴展應該是快速和輕量級的,並且在加載圖像時不會阻塞UI線程,在實際應用中,您可以在後臺執行此操作。

指定在內線顯示了

默認擴展現在將顯示,每當出現UIActivityViewController菜單中,可以指定其中的場景擴展應該出現在你需要在擴展信息來設置適當的值。NSExtension,NSExtensionAttributes,NSExtensionActivationRule 下的plist您可以找到可用密鑰的decumentation這裏: Information Property List Key Reference

注意,默認行爲是爲您的擴展出現時所有鍵申請,這意味着,如果你指定NSExtensionActivationSupportsImageWithMaxCountNSExtensionActivationSupportsMovieWithMaxCount只有在用戶共享圖像電影不是圖像或電影時,您的擴展才會顯示。 要寫入出現了幾個共享數據類型中的任何一個延伸看看這裏

http://bryan.io/post/97658826431/what-we-learned-building-the-tumblr-ios-share-extension

Declaring Supported Data Types for a Share or Action Extension

+1

我得到了圖像和所有。現在我需要在後臺分享圖片。你能提供任何代碼嗎? – TamilKing 2014-11-18 10:53:33

+0

我不明白,從你的問題看,你似乎正在開發一個共享擴展,所以你爲什麼要分享一個已經與你共享的圖像? 無論上下文如何,使用共享擴展的唯一方法是通過UIActivityViewController,它需要呈現此控制器,因此無法在後臺完成。 – MichaelB 2014-11-19 05:55:48

+0

我添加所有的東西,也分享..有些時候它不共享..我需要調用兩個API來上傳圖像。我希望在後臺會話中處理錯誤。 – TamilKing 2014-11-19 11:37:16