iOS 社会化分享方案:

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

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

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 

-(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 社会化分享方案:)