用于Facebook的UIActivityViewController不显示默认文本
我正在使用UIActivityViewController,它提供了一些默认的文本和链接。 所有的社交媒体(短信,电子邮件,微博)都会显示默认的文字和url。 但是,在显示URL图像的同时使用FB,默认文本不显示(只是空白)。 以下是代码:
NSString *shareStr = [NSString stringWithFormat:@""some text"]; NSURL *website = [NSURL URLWithString:@"website"]; NSArray *shareAray = @[shareStr,website]; [self viewWillDisappear:YES]; UIActivityViewController *activityController = [[UIActivityViewController alloc]initWithActivityItems:shareAray applicationActivities:nil]; if([activityController respondsToSelector:@selector(popoverPresentationController)] ) activityController.popoverPresentationController.barButtonItem = self.shareButton; [self presentViewController:activityController animated:YES completion:nil]; [activityController setCompletionHandler:^(NSString *activityType, BOOL completed){ if (!activityType || UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) { [self viewWillAppear:YES]; } }];
更新:正如其他人在下面说的,FB不再允许预填充。 这里是另一个video的链接,给出了什么是允许的,什么不是: https : //developers.facebook.com/docs/apps/review/prefill
看起来Facebook不再希望开发人员用文本预先填写post。 从https://developers.facebook.com/docs/sharing/ios#ios-integration :
iOS共享表的使用受Facebook平台政策的约束,其中包括第2.3节,其中指出,应用程序可能不会预先填写。 在分享表的上下文中,这意味着应用程序可能不会预先在分享表的initialText字段中填入早些时候在他们使用应用程序时未input的内容。
似乎他们宁愿开发者使用SDK:
虽然您可以直接使用iOS本机视图控制器API(共享表单),但使用Facebook SDK提供的本机iOS共享对话框有以下几个原因。 使用本地共享对话框提供了一种快速testing方式,即人们在其iOS 6+设备上loginFacebook。 该API也使用与Facebook SDK的其他部分相同的样式块。
我已经发现,当你有Facebook应用程序安装。 通过删除Facebook应用程序UIActivityViewController
正确显示预填充文本和图像预览也是不同的。 它显示图像底部的网站url。
我已经做了一个窍门,从iOS中的UIActivityViewController
共享文本和图像。 首先,我需要find用户是否从UIActivityView
点击了Facebook图标,然后用文本和图像打开Facebook的共享对话框。 这是分享文字和图片的唯一方法。 以下是我的代码。 我希望这可以为开发人员节省时间。 由于Facebook已经改变了政策,很难分享预填文本。
请将UIActivityItemSource
作为Delegate添加到.h文件中
当用户点击共享button来显示UIActivityViewController
时,这将被调用。
NSString *textObject = [NSString stringWithFormat:@"%@, %@",shareString,timeDuration]; NSMutableArray *activityItems = [NSMutableArray arrayWithObjects:self, textObject, shareImage, nil]; activityController = [[UIActivityViewController alloc] initWithActivityItems:activityItems applicationActivities:nil]; [self presentViewController:activityController animated:YES completion:nil];
当用户点击它的Facebook的图标。
编译标记 – UIActivityItemSource协议
- (id)activityViewController:(UIActivityViewController )activityViewController itemForActivityType:(NSString )activityType { if ([activityType isEqualToString:UIActivityTypePostToFacebook]) { [self dismissViewControllerAnimated:activityController completion:nil]; [self performSelector:@selector(postToFacebook) withObject:self afterDelay:1.0];} return nil; } -(void)postToFacebook { [FBSDKSettings setAppID:@""]; NSArray *imagesListingArray = [[item objectForKey:@"imgs"] valueForKey:@"img"]; NSString * shareImage = [imagesListingArray objectAtIndex:0]; FBSDKShareLinkContent *content = [[FBSDKShareLinkContent alloc] init]; content.contentTitle = @"F-Spot"; content.contentDescription = [NSString stringWithFormat:@"%@ %@", [item valueForKey:@"event_name"],[item valueForKey:@"duration"]]; content.imageURL = [NSURL URLWithString:shareImage]; FBSDKShareDialog *shareDialog = [[FBSDKShareDialog alloc] init]; shareDialog.mode = FBSDKShareDialogModeNative; if(shareDialog.canShow) { shareDialog.mode = FBSDKShareDialogModeFeedBrowser; } shareDialog.shareContent = content; shareDialog.delegate = self; [shareDialog show]; }
这个扩展修复了这个问题,查看一下! https://github.com/alexruperez/ARFacebookShareKitActivity
从UIActivityViewController启动FBSDKShareKit而不是默认的Facebook共享表。
我欺骗UIActivityViewController
通过向共享数组添加预览图像来使用文本。
- 是否可以添加一个链接,下载一个只能通过在Facebook上分享下载的文件?
- React-Native:应用程序尚未注册错误
- Facebook API发布链接与自定义图片
- Facebook的OAuth“此url的域不包含在应用程序的域名”
- 给定URL不被应用程序configurationFacebook应用程序错误所允许
- Eclipse中的Android Facebook SDK 4
- 获取所有用户朋友使用FacebookgraphicsAPI – Android的
- Facebook Open Graph不清除caching
- 从ASP.NET MVC 5中的Facebook v2.4 API访问OAuth ExternalLoginCallback中的电子邮件地址