Ale*_*x G 44 xcode facebook objective-c ios ios6
我刚刚通过ios 6将facebook集成到我的应用程序中,但是在我的墙上发布时遇到了问题.它只是说"通过ios app发布".我希望它说"通过应用名称发布".我已经与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;
}
Run Code Online (Sandbox Code Playgroud)
Dan*_*iel 70
所以Digg for iOS应用程序能够共享到Facebook而无需使用Accounts框架来获取用户权限......他们使用UIActivityViewController并将帖子显示为"通过Digg",我联系了Digg的某个人,他们告诉我这是一本手册在此过程中,您必须在Apple App Store中发布您的iOS应用程序,并在Facebook App Store中接受并发布您的Facebook应用程序.然后Facebook可以通过这种方式手动处理两者的链接.
明显的缺点是,这UIActivityViewController意味着您可以在不与Facebook集成的情况下从您的应用程序共享,无需Facebook应用程序......但要获得"通过您的应用程序名称",您将需要Facebook将批准的Facebook应用程序他们自己的应用程序商店,一旦所有内容都存在,您需要联系开发人员关系以将其全部链接起来.
请注意,我的其余部分(我之前的回答)是正确的,解决方案是Facebook可以为您做的手动过程,您的iOS代码不应受到影响.
您想要的原生Facebook集成实际上是作曲家视图控制器.这是通过使用SLComposeViewController具有服务类型的类获得的SLServiceTypeFacebook.
此课程仅提供单向通信,当您注意到时,您可以通过点击"发布"按钮确认任何墙上的帖子.此视图控制器由iOS系统拥有,而不是您的应用程序.通过与此compose视图控制器交互,您实际上绕过了您的应用程序.
用户喜欢这样做,因为它为他们提供了安全保障.
除非您的应用程序仅通过更深入的双向Facebook集成运行,否则您应该使用SLComposeViewController(更深入的集成意味着您的应用需要您的朋友列表或现有的墙上帖子,专辑等...).
为了使您的应用程序发布的帖子在Facebook上显示"via xxxx"而不是"via iOS",您需要通过SLRequest课程与Facebook进行互动.为了做到这一点,你必须与交互也Account.framework除了Social.framework.
它类似于以前使用过的Facebook iOS SDK(现在仍然可以使用),在设置方面,你可以获得对设备账户存储的引用,你需要Facebook账号并发送你的Facebook应用ID和一系列权限.
如果获得批准,您可以通过SLRequest课程与Facebook Graph API进行交互.通过在这个庄园中张贴到您的墙上,您将获得所需的"via xxx".
请注意,在这种情况下,您有责任创建自己的撰写视图.
您当然可以通过原生用户界面启发自己,同时查看iPhoto的iOS应用程序,尝试使用该应用程序与Facebook共享,您会注意到它请求与您的Facebook帐户进行交互的权限(使用时不会发生的事情SLComposeViewController),然后提供一些非常接近SLComposeViewControllerFacebook帖子撰写的内容.
但如果你仔细观察,你会发现它不一样.这也适用于Twitter及其原生应用与原生集成.他们有自己的撰写视图,注意他们使用本机iOS集成(Apple框架)非常有趣.我们知道这一点,因为进入设置>隐私> Twitter,您可以看到Twitter应用程序是使用设备上的Twitter帐户的授权应用程序.
Facebook也是如此.
如果您没有获得许可,那么您无法发布为您的应用程序 - 也就是"通过myApp".
对不起,让你失望,我也一直在寻找一种方式的整合ACAccount进入SLComposeViewController,但无法要么找到路.这是一种耻辱......因为原生UI很甜蜜.
doc*_*ang 13
我最终使用自定义Facebook框架和新的Facebook SDK 3.1. 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:^{}];
Run Code Online (Sandbox Code Playgroud)
建立:
$PROJECT_FOLDER\build\Debug-iphonesimulator并将FBComposeView.framework&将它们拖到FBComposeView.bundle项目中.注意:请务必使用中的Debug-iphonesimulator.这是胖二进制.

| 归档时间: |
|
| 查看次数: |
25990 次 |
| 最近记录: |