iOS7.0增加了AirDrop功能,可知在未來,手機信息資源的直接分享會越來越重要。而我們在iPhone系統短信點擊照片會看到右上角的分享按鈕,點擊可以彈出一系列的應用菜單,允許用戶把這張圖片分享到其他應用。下面談談怎樣讓自己的應用出現在這個全局菜單。
當然,這要應用內部手動設置支持。如圖:
(7.0的分享菜單)
(在IOS6.0分別在message和safari支持的全局分享調用)
設定應用支持的全局分享設置,在plist添加下面代碼:
<key>CFBundleDocumentTypes</key> <array> <dict> <key>CFBundleTypeName</key> <string>ShareImage</string> <key>CFBundleTypeRole</key> <string>Viewer</string> <key>LSHandlerRank</key> <string>Owner</string> <key>LSItemContentTypes</key> <array> <string>public.image</string> </array> </dict> </array>
簡單說明一下,CFBundleDocumentTypes是必須添加的一個key,LSItemContentTypes指定所支持的分享類型,如上面的public.image就是指定圖片的分享。CFBundleTypeRole和LSHandlerRank就是指定應用對這個資源的權限,例如viewer或者owner。
當用戶點擊了所對應的分享應用圖標,就會調起應用,並且回調這個函數:
- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation {}
從url就能取出對應的資源,例如圖片或者視頻。至於下面的流程就得客戶端自己定制。
而在6.0以后,系統已經允許我們調用這個分享菜單界面,以把應用內的資源分享到其他應用。主要用的幾個類如下:
UIActivity:(用來定制上面分享的item)
- (BOOL)canPerformWithActivityItems:(NSArray *)activityItems{}
- (void)prepareWithActivityItems:(NSArray *)activityItems{}
- (void)performActivity{}
UIActivityViewController:(用來顯示分享菜單的controller)
- (id)initWithActivityItems:(NSArray *)activityItems applicationActivities:(NSArray *)applicationActivities;
這是測試調用這個菜單的一個示例,系統提供的控件,效果還是不錯的。iOS7.0就更好看點。具體可以詳細看看UIActivityViewController的介紹。
這是系統默認支持的分享菜單。Weibo很神奇地入選了。