美文网首页程序员
iOS 社会化分享方案:

iOS 社会化分享方案:

作者: 墨_辰 | 来源:发表于2018-05-17 15:15 被阅读0次

    接着二维码的生成后,又要求将二维码通过微信,微博等第三方的平台分享给别人:

    方法一:通过友盟实现分享

    1.注册友盟的APPKEY和导入对应的SDK;

    2.配置SDK;

    3.设置Web支持HTTP:

    4.添加依赖库;

    5.设置白名单(配置在info.plist中);

    6.配置Schemes ;

    7.在AppDelegate中配置相关信息;

    8.设置回调;

    然后就可以使用了,代码如下:

    - (void)shareWebPageToPlatformType:(UMSocialPlatformType)platformType
    
    {
    
     //创建分享消息对象
    
     UMSocialMessageObject *messageObject = [UMSocialMessageObject messageObject];
    
     //创建网页内容对象
    
     //UMShareWebpageObject *shareObject = [UMShareWebpageObject shareObjectWithTitle:self.file.fileName descr:[NSString stringWithFormat:@""] thumImage:_QRCodeImage];
    
     UMShareWebpageObject *shareObject = [UMShareWebpageObject shareObjectWithTitle:self.fileName descr:@"" thumImage:self.QRCodeImage];
    
     //设置网页地址
    
     shareObject.webpageUrl = self.sharePath;
    
     //分享消息对象设置分享内容对象
    
     messageObject.shareObject = shareObject;
    
     //调用分享接口
    
     [[UMSocialManager defaultManager] shareToPlatform:platformType messageObject:messageObject currentViewController:self completion:^(id data, NSError *error) {
    
     if (error) {
    
     NSLog(@"分享失败");
    
     }else{
    
     NSLog(@"分享成功”);
    
     }
    
     }];
    
    }
    

    由于某些原因被迫放弃了这个方案。

    方法二:使用系统原生Social Framework,这个方案只需要导入一个头文件,不需要导入其他的SDK。而且用起来也很简单。(此方法在ios11被废弃)

    #import <Social/Social.h>
    
    -(void)shareToWeibo{
    
     //创建分享的控制器
    
     SLComposeViewController *composeVc = [SLComposeViewController composeViewControllerForServiceType:SLServiceTypeSinaWeibo];
    
     if (composeVc == nil){
    
     NSLog(@"未安装软件");
    
     return;
    
     }
    
     if (![SLComposeViewController isAvailableForServiceType:SLServiceTypeSinaWeibo]) {
    
     NSLog(@"软件未配置登录信息");
    
     return;
    
     }
    
     //添加分享的文字、图片、链接
    
     [composeVc setInitialText:self.file.fileName];
    
     [composeVc addImage:self.QRCodeImage];
    
     [composeVc addURL:[NSURL URLWithString:self.sharePath]];
    
     //弹出分享控制器
    
     [self presentViewController:composeVc animated:YES completion:nil];
    
     //监听用户点击了取消还是发送
    
     composeVc.completionHandler = ^(SLComposeViewControllerResult result){
    
     if (result == SLComposeViewControllerResultCancelled) {
    
      NSLog(@"点击了取消");
    
     } else {
    
     NSLog(@"点击了发送");
    
     }
    
     };
    
    }
    

    碰到的问题是,一直在报软件未配置登录信息的问题。即使已经下载微博并且正常登录了也不行,试了很多的方法也搞不定。后来在论坛上看到说这个方案在iOS11已经被废弃了。

    方法三:使用系统原生的UIActivityViewController方法,也很简单不用引入任何东西。但是真的是挺丑的。而且分享类型受限,不过发个二维码是足够用了。代码如下:

    -(void)shareToOthers{
    
     //分享的标题
    
     NSString *textToShare = self.fileName;
    
     //分享的图片
    
     UIImage *imageToShare = self.QRCodeImage;
    
     //分享的url
    
     NSURL *urlToShare = [NSURL URLWithString:self.sharePath];
    
     NSArray *activityItems = @[textToShare,imageToShare,urlToShare];
    
     UIActivityViewController *activityVC = [[UIActivityViewController alloc]initWithActivityItems:activityItems applicationActivities:nil];
    
     //不出现在活动项目
    
     activityVC.excludedActivityTypes = @[UIActivityTypePrint, UIActivityTypeCopyToPasteboard,UIActivityTypeAssignToContact,UIActivityTypeSaveToCameraRoll];
    
     [self.fileViewController presentViewController:activityVC animated:YES completion:nil];
    
     // 分享之后的回调
    
     activityVC.completionWithItemsHandler = ^(UIActivityType _Nullable activityType, BOOL completed, NSArray * _Nullable returnedItems, NSError * _Nullable activityError) {
    
     if (completed) {
    
     NSLog(@"completed");
    
     //分享 成功
    
     } else {
    
     NSLog(@"cancled");
    
     //分享 取消
    
     }
    
     };
    
    }
    

    还有其他的方法可以看这个帖子:IOS社会化分享方案

    相关文章

      网友评论

        本文标题:iOS 社会化分享方案:

        本文链接:https://www.haomeiwen.com/subject/wzvbdftx.html