我刚才整合Facebook的进入我的应用程序通过iOS 6中,但在我的墙上张贴时,我有一个问题。 它只是说“通过iOS应用后”。 我希望它说:“通过应用程序的名称发布”。 我已经与Facebook的应用程序的身份和我有他们已分配的应用程序数目,但我不知道如何将它与Facebook的整合集成。
下面是我的代码。 如果有人可以帮助,我们将不胜感激。 谢谢!
{
NSString *message;
message= [[NSString alloc] initWithFormat:@"I've earned %@ points", [self retrieveScore]];
if([SLComposeViewController isAvailableForServiceType:SLServiceTypeFacebook]) {
SLComposeViewController *controller = [SLComposeViewController composeViewControllerForServiceType:SLServiceTypeFacebook];
[controller setInitialText:message];
[controller addURL:[NSURL URLWithString:@"http://mysite"]];
[self presentViewController:controller animated:YES completion:Nil];
[message release];
SLComposeViewControllerCompletionHandler myBlock = ^(SLComposeViewControllerResult result){
NSString *output= nil;
switch (result) {
case SLComposeViewControllerResultCancelled:
output= @"Action Cancelled";
NSLog (@"cancelled");
break;
case SLComposeViewControllerResultDone:
output= @"Post Succesfull";
NSLog (@"success");
break;
default:
break;
}
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Facebook" message:output delegate:nil cancelButtonTitle:@"Ok" otherButtonTitles:nil];
[alert show];
[alert release];
[controller dismissViewControllerAnimated:YES completion:Nil];
};
controller.completionHandler =myBlock;
}
更新-这是可以做到
所以, Digg的适用于iOS的应用程序能够分享到Facebook不使用帐户框架来获取用户权限......他们用UIActivityViewController
并有后显示为“Digg上”,我从Digg的联络人,他们告诉我,这是一个手工工艺,你必须有你的iOS应用发表在苹果App Store,也有你的Facebook应用程序接受并发布在Facebook的应用程序商店。 那么Facebook可以手动处理以这种方式连接两个。
最明显的缺点,这是该UIActivityViewController
意味着你可以从你的应用程序不共享与Facebook,不需要一个Facebook应用程序的任何整合......但要获得“通过应用程序名”,您将需要一个Facebook应用程序,Facebook将批准到自己的应用程序商店,一旦一切活动,您需要联系开发商关系到它的所有连接起来。
请注意,我的答案的其余部分(我以前的答案)是正确的,该解决方案是一个手动过程,Facebook能够为你做什么,你的iOS代码应该不会受到影响。
前面的答案和解决方法
你想要的原生Facebook的整合实际上是作曲家视图控制器。 这是通过使用所获得的SLComposeViewController
与服务类型类SLServiceTypeFacebook
。
这个类只是提供了一个双向沟通,当你发现,你是一个确认通过点击发布按钮任何墙壁职位。 该视图控制器是由iOS的系统,而不是你的应用程序拥有。 并通过与此撰写视图控制器互动你实际上是绕过应用程序。
用户喜欢这样做,因为这给他们的安全。
除非你的应用程序的功能只能通过更深层次的,双向的Facebook的整合,你应该使用SLComposeViewController
(更深层次的集成意味着你的应用程序需要你的好友列表或现有的涂鸦墙,相册等)。
为了让从后您的应用程序发起的在Facebook上出现的“XXXX通过”,而不是“通过iOS版”,则需要通过与Facebook互动SLRequest
类。 为了做到这一点,你也必须与互动Account.framework
除了Social.framework
。
它类似于以前使用以前的Facebook的iOS SDK(现在仍然可以使用)的设置它的条款,你到了设备的账户存储的引用,你的Facebook账户请求和发送您的Facebook应用程序ID和权限的数组。
如果授予您接着可以通过Facebook的图形API进行交互SLRequest
类。 通过在这个庄园张贴到你的墙,你将有希望的“通过XXX”。
要使用此请出了SLRequest文档 。
请注意,您有责任在这种情况下创建自己撰写视图。
当然,你可以从本地UI鼓舞自己,还检查了iPhoto的iOS应用程序,尝试使用该应用分享至Facebook,你会发现它要求允许使用Facebook帐户互动(东西使用时不会发生SLComposeViewController
),它然后介绍一些非常接近SLComposeViewController
对于Facebook后组成。
但是,如果你仔细看,你会发现它是不一样的。 这还在于Twitter和他们的原生应用程式与原生集成。 他们有自己撰写视图,它是真正有趣的,他们使用的iOS原生集成(苹果框架)。 我们知道这是因为进入设置>隐私>的Twitter,你可以看到Twitter的应用程序是在设备上使用Twitter的帐户授权的应用程序。
这同样适用于Facebook的。
如果你没有得到许可,那么你有没有为发布您的应用程序的方式 - 又名“通过对myApp”。
对不起,让你失望,我也一直在寻找一种方式来整合一个ACAccount
到SLComposeViewController
但无法要么找到路。 这是一种耻辱......因为原生UI是甜的。
我结束了使用新的Facebook SDK 3.1的自定义Facebook的框架。 Facebook的撰写视图
原来是在这里: Facebook的构成图 。 我刚刚修正了一些小的警告,并与新的FB SDK 3.1更新。
用法:
DEFacebookComposeViewControllerCompletionHandler __block completionHandler = ^(DEFacebookComposeViewControllerResult result) {
[self dismissViewControllerAnimated:YES completion:nil];
switch (result) {
case DEFacebookComposeViewControllerResultCancelled:
NSLog(@"Facebook Result: Cancelled");
break;
case DEFacebookComposeViewControllerResultDone:
NSLog(@"Facebook Result: Sent");
break;
}
};
DEFacebookComposeViewController * compose = [[DEFacebookComposeViewController alloc] init];
[compose setInitialText:self.shareText];
[compose addImage:self.shareImage];
[compose addURL:self.shareURL];
[compose setCompletionHandler:completionHandler];
[self presentViewController:compose animated:YES completion:^{}];
建立:
- 打开项目,做一个干净的构建。
- 进入该文件夹
$PROJECT_FOLDER\build\Debug-iphonesimulator
并拖动两个FBComposeView.framework
& FBComposeView.bundle
到项目中。
注意:一定要使用那些在Debug-iphonesimulator
。 它是脂肪的二进制文件。
我们解决了与iOS 5 Twitter的整合类似的问题,其结果是:
当张贴到Twitter与开发建设,或通过模拟器将几乎总是在Twitter上显示为“通过iOS版”。 一旦程序被批准,你在AppStore发布构建它应该显示为张贴“YourAppName iOS上的”一个链接到AppStore的应用程序页面。
原源(ShareKit问题的讨论)
我认为苹果不会与Facebook和其他社会服务一样。
编辑:不幸的是这只是真的Twitter.framework工作。 我认为最好的解释和答案高于丹尼尔的一个。 也许这是一次雷达,所以苹果知道,我们怎么想。
如何使用SLRequest与Facebook的例子是在这太问题
EDIT2:提出了雷达的Bug ID#12980058.希望他们听...
文章来源: Sharing with iOS 6.0 native Facebook integration: “Posted via my app name”?