参考文章地址:IOS系统自带社交分享 苹果的UIActivityViewController
很多APP中都带有社交分享功能,通过用户的分享,让更多地人去了解和使用这个APP,目前社交分享是移动互联网应用程序推广的最重要手段之一,国内较或的分享平台有微信,IOS6后苹果集成的新浪微博,还有IOS7后集成的腾讯微博。 在IOS中,实现社交分享可以自己编写各个平台的分享代码,但代码量较多,也可以利用IOS自带的Social.framework,更可以利用第三方的分享框架,如友盟,ShareSDK等。接下来先介绍一个系统自带的分享功能。 打开设备或模拟器的偏好设置,可以看到如下
应用中用到 UIActivityViewController 。
使用代码:
UIImageView *share=(UIImageView *)[self.imageViews objectAtIndex:pageNumber];
NSString *su00=[NSString stringWithFormat:@"Let Us Affirm Together with Affirmations: %@",[[NSUserDefaults standardUserDefaults]objectForKey:@"share*******Text"]];
NSString *su;
if (su00.length>88) {
su = [NSString stringWithFormat:@"%@...",[su00 substringToIndex:88]];
}else{
su = [NSString stringWithString:su00];
}
NSURL *html = [NSURL URLWithString:@"http://itunes.apple.com/app/id9*******0?mt=8"];
NSArray *activityItems = @[su, share.image,html];
NSLog(@"activityItems-----%@",activityItems);
UIActivityViewController *activityViewController =
[[UIActivityViewController alloc] initWithActivityItems:activityItems applicationActivities:nil];
[activityViewController setCompletionHandler:^(NSString *act, BOOL done)
{
[self doneclick:self];
NSLog(@"act type %@",act);
NSString *ServiceMsg = nil;
if ( [act isEqualToString:UIActivityTypeMail] ) ServiceMsg = @"Mail sent";
if ( [act isEqualToString:UIActivityTypePostToTwitter] ) ServiceMsg = @"Post on twitter, ok!";
if ( [act isEqualToString:UIActivityTypePostToFacebook] ) ServiceMsg = @"Post on facebook, ok!";
if ( done )
{
// UIAlertView *Alert = [[UIAlertView alloc] initWithTitle:ServiceMsg message:@"" delegate:nil cancelButtonTitle:@"ok" otherButtonTitles:nil];
// [Alert show];
NSLog(@"ok ");
}
else
{
// didn't succeed.
NSLog(@"no ok");
}
}];
当点击屏幕的时候可以看到如下
点击post即可将内容分享出去。当然该分享方式具有一定的局限性,所以一般我们都会使用第三方框架。 这个自带的分享功能简单实用,却也有很多不方便的地方,我目前做的这个项目中就遇到了一个问题(问题:主界面可以share成功,还有一个affirmation类进去时tableview 点击cell去share 也ok,最后一个 session类进去是tableview->cell -> scrollView ->tableView->cell->share 可以出发share类方法,界面会出现假死机现象,点啥都没反应,也没有crash,也没有任何报错,昨天纠结了一下午,最后发现session类的层级一直把share挪到scrollview之外,share类方法才会触发,所以怀疑是不是跟scrollview有冲突,准备写个demo验证一下),到现在还没找到解决的方法,望大牛们提点一下。