接着二维码的生成后,又要求将二维码通过微信,微博等第三方的平台分享给别人:
方法一:通过友盟实现分享
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社会化分享方案。
网友评论