2018/5/18 15:04:16当前位置推荐好文程序员浏览文章

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

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

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社会化分享方案。

网友评论