使用Facebook SDK支持iOS 5和iOS 6 3.1
我有一个应用程序,当前支持通过使用旧的Facebook SDK for iOS的对话框发布到Facebook。使用Facebook SDK支持iOS 5和iOS 6 3.1
更新到了Facebook SDK 3.1的iOS之后,似乎我可以:
- 使用旧风格的API(,实例化一个
Facebook
,叫dialog:...
) -
或使用新风格API(
FacebookSDK.h
,使用共享FBSession
,本机对话框)
不同的头文件碰撞,似乎c完全不相容。
我可以同时做吗?如果是这样,那么怎么样?
我想你会得到一个“重复的错误”,如果你同时使用。我知道这很糟糕。
我现在一直在为重复的错误搞砸了。如果你到达那里,请告诉我。
您可能需要抽象出一个通用接口并在单独的源文件中执行两次(因此编译器从未在同一个文件中看到Facebook.h和FacebookSDK.h)。
只需包含Facebook.h即可。首先,将DeprecatedHeaders文件夹复制到Frameworks项目中。 DeprecatedHeaders可在〜/ Documents/FacebookSDK/FacebookSDK.frameworks/Versions/A /下找到。当您复制它时,请勿将这些项目复制到您的项目中,以便它们保持复制作为参考。
接下来,在你的代码,你必须:
#import <FacebookSDK/FacebookSDK.h>
替换此:
#import "Facebook.h"
您可能会得到一个错误,在这种情况下,关闭并重新打开该项目。
接下来,您想声明一个Facebook对象并设置会话或在会话打开或关闭时将其清除。
以一个例子,样本:https://github.com/fbsamples/ios-3.1-howtos/tree/master/ShareNativeDialogsHowTo被记录在这里,https://developers.facebook.com/docs/howtos/share-native-dialogs-ios-sdk/
你可以做以下更改样品退却到饲料而不是对话框回落到一个视图控制器与共享的UI 。在ViewController中。中号,包括Facebook的头之后,你会做这些改变:
....
@property (unsafe_unretained, nonatomic) IBOutlet UIButton *publishButton;
@property (nonatomic, retain) Facebook *facebook;
....
@synthesize authButton;
@synthesize facebook = _facebook;
....
- (void)sessionStateChanged:(NSNotification*)notification {
if (FBSession.activeSession.isOpen) {
self.publishButton.hidden = NO;
[self.authButton setTitle:@"Logout" forState:UIControlStateNormal];
if (nil == self.facebook) {
self.facebook = [[Facebook alloc]
initWithAppId:FBSession.activeSession.appID
andDelegate:nil];
// Store the Facebook session information
self.facebook.accessToken = FBSession.activeSession.accessToken;
self.facebook.expirationDate = FBSession.activeSession.expirationDate;
}
} else {
self.publishButton.hidden = YES;
[self.authButton setTitle:@"Login" forState:UIControlStateNormal];
self.facebook = nil;
}
}
- (void) publishUsingFeedDialog {
// Put together the dialog parameters
NSMutableDictionary *params = [NSMutableDictionary dictionaryWithObjectsAndKeys:
@"Facebook SDK for iOS", @"name",
@"Build great social apps and get more installs.", @"caption",
@"The Facebook SDK for iOS makes it easier and faster to develop Facebook integrated iOS apps.", @"description",
@"https://developers.facebook.com/ios", @"link",
@"https://raw.github.com/fbsamples/ios-3.x-howtos/master/Images/iossdk_logo.png", @"picture",
nil];
// Invoke the dialog
[self.facebook dialog:@"feed" andParams:params andDelegate:nil];
}
- (IBAction)publishButtonAction:(id)sender {
BOOL displayedNativeDialog =
[FBNativeDialogs
presentShareDialogModallyFrom:self
initialText:@""
....
if (!displayedNativeDialog) {
/*ShareViewController *viewController =
[[ShareViewController alloc] initWithNibName:@"ShareViewController"
bundle:nil];
[self presentViewController:viewController
animated:YES
completion:nil];*/
[self publishUsingFeedDialog];
}
}
它显示了几个对象的重复执行错误。 – Bala
您应该转移到更新的3.5 SDK并查看本教程以了解如何使用提要对话框 - https://developers.facebook.com/docs/howtos/feed-dialog-using-ios-sdk/ –
尝试导入
"FBSession.h"
代替
#import<FacebookSDK/FacebookSDK.h>
它会解决重复的错误..
冲突位于重复的Objective-C接口定义级别。这些不通过单独导入文件解决。 ObjC运行时不会允许它。 –
你能解决重复错误的地方吗? – estemendoza