iOS小技能:社会化分享方案

601 阅读1分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第2天,点击查看活动详情

引言

  1. 系统原生 :UIActivityViewController、Social Framework
  2. 友盟(第三方分享平台)
  3. 案例:小程序分享blog.csdn.net/z929118967/…

如果App分享类型需要支持多媒体(声音、视频、文件等),需要支持的平台很多,推荐使用友盟分享。

I 系统原生: UIActivityViewController

1.1 支持的分享平台

iOS8之后App可以通过Share Extension提供分享入口,例如微信App的Share Extension对应的平台ID是@"com.tencent.xin.sharetimeline"

可通过completionWithItemsHandler回调获取本机可用的Share Extension的bundle Id 。

隐藏默认的平台


    activityVC.excludedActivityTypes = @[UIActivityTypeOpenInIBooks,UIActivityTypeAirDrop];
    
   

支持的平台:

typedef NSString * UIActivityType NS_TYPED_EXTENSIBLE_ENUM;

UIKIT_EXTERN UIActivityType const UIActivityTypePostToFacebook     API_AVAILABLE(ios(6.0)) __TVOS_PROHIBITED;
UIKIT_EXTERN UIActivityType const UIActivityTypePostToTwitter      API_AVAILABLE(ios(6.0)) __TVOS_PROHIBITED;
UIKIT_EXTERN UIActivityType const UIActivityTypePostToWeibo        API_AVAILABLE(ios(6.0)) __TVOS_PROHIBITED;    // SinaWeibo
UIKIT_EXTERN UIActivityType const UIActivityTypeMessage            API_AVAILABLE(ios(6.0)) __TVOS_PROHIBITED;
UIKIT_EXTERN UIActivityType const UIActivityTypeMail               API_AVAILABLE(ios(6.0)) __TVOS_PROHIBITED;
UIKIT_EXTERN UIActivityType const UIActivityTypePrint              API_AVAILABLE(ios(6.0)) __TVOS_PROHIBITED;
UIKIT_EXTERN UIActivityType const UIActivityTypeCopyToPasteboard   API_AVAILABLE(ios(6.0)) __TVOS_PROHIBITED;
UIKIT_EXTERN UIActivityType const UIActivityTypeAssignToContact    API_AVAILABLE(ios(6.0)) __TVOS_PROHIBITED;
UIKIT_EXTERN UIActivityType const UIActivityTypeSaveToCameraRoll   API_AVAILABLE(ios(6.0)) __TVOS_PROHIBITED;
UIKIT_EXTERN UIActivityType const UIActivityTypeAddToReadingList   API_AVAILABLE(ios(7.0)) __TVOS_PROHIBITED;
UIKIT_EXTERN UIActivityType const UIActivityTypePostToFlickr       API_AVAILABLE(ios(7.0)) __TVOS_PROHIBITED;
UIKIT_EXTERN UIActivityType const UIActivityTypePostToVimeo        API_AVAILABLE(ios(7.0)) __TVOS_PROHIBITED;
UIKIT_EXTERN UIActivityType const UIActivityTypePostToTencentWeibo API_AVAILABLE(ios(7.0)) __TVOS_PROHIBITED;
UIKIT_EXTERN UIActivityType const UIActivityTypeAirDrop            API_AVAILABLE(ios(7.0)) __TVOS_PROHIBITED;
UIKIT_EXTERN UIActivityType const UIActivityTypeOpenInIBooks       API_AVAILABLE(ios(9.0)) __TVOS_PROHIBITED;
UIKIT_EXTERN UIActivityType const UIActivityTypeMarkupAsPDF        API_AVAILABLE(ios(11.0)) __TVOS_PROHIBITED;
UIKIT_EXTERN UIActivityType const UIActivityTypeSharePlay          API_AVAILABLE(ios(15.4)) __TVOS_PROHIBITED;

1.2 设置回调block,获取分享相关信息

    //设置回调block,获取分享相关信息
    
    UIActivityViewControllerCompletionWithItemsHandler myBlock = ^(UIActivityType __nullable activityType, BOOL completed, NSArray * __nullable returnedItems, NSError * __nullable activityError) {

           

           if (completed){

               NSLog(@"分享完成:%@",activityType);
               //分享完成:com.tencent.xin.sharetimeline
           }

       };
    
    activityVC.completionWithItemsHandler = myBlock;
    

1.3 案例

- (void)textToShare{
    
    NSString *textToShare = @"公众号:iOS逆向";

    UIImage *imageToShare = [UIImage imageNamed:@"icon"];
        
    NSURL *urlToShare = [NSURL URLWithString:@"https://blog.csdn.net/z929118967?type=blog"];


    NSArray *activityItems = @[textToShare, imageToShare, urlToShare];

    UIActivityViewController *activityVC = [[UIActivityViewController alloc]initWithActivityItems:activityItems applicationActivities:nil];



    [self presentViewController:activityVC animated:YES completion:nil];


}

各平台支持的的分享内容:

II 系统原生: Social Framework

#import <Social/Social.h> 可以自己绘制UI,满足了很多个性化的需求。

导入Social.framework:

III 集成第三方分享平台

集成社会化分享(代理商展业二维码)https://kunnan.blog.csdn.net/article/details/124340777