Я пытаюсь интегрировать SDK facebook ios в мой проект, использующий ARC. Как указано в документации разработчика Facebook , рекомендуется создавать SDK facebook в качестве статической библиотеки для этого типа интеграции. Я запускаю предоставленный скрипт для сборки статической библиотеки и затем добавляю в свой проект:
, перетаскивая все содержимое выходного каталога lib:
lib \ facebook-ios-sdk (который содержит lib и связанные заголовки)
в разделе Link Binaries с библиотеками / фазами сборки моего целевого проекта я явно добавил статическую библиотеку
У меня есть класс, который реализует все методы FBSessionDelegate. Однако у меня есть несколько предупреждений для каждого метода этого делегата, которые не рассматриваются как реализованные в compilo:
Semantic Issue
Method in protocol not implemented
Required for direct or indirect protocol 'FBSessionDelegate'
Методы, о которых идет речь:
- (void)fbDidLogin;
- (void)fbDidNotLogin:(BOOL)cancelled;
- (void)fbDidExtendToken:(NSString*)accessToken
expiresAt:(NSDate*)expiresAt;
- (void)fbDidLogout;
- (void)fbSessionInvalidated;
Я действительно не понимаю, почему компилятор дает мне эти предупреждения: - \ У кого-нибудь есть идея, почему у нас такое поведение? Я видел в этом блоге , что они добавляют весь facebook-ios-sdk к проекту, но в идеале я просто хочу добавить lib, а не весь проект.
Любые разъяснения / помощь будет принята с благодарностью!
[EDIT]
Проблема, которую я упоминаю, может быть легко воспроизведена, просто следуя рубрике на этой странице, чтобы проверить соединение с приложением по факсу здесь . Далее я реализовал метод fDidLogin, и все же у меня есть предупреждение для этого метода ...
Мой заголовочный файл выглядит так:
#import <UIKit/UIKit.h>
#import "FBConnect.h"
@class SCLViewController;
@interface SCLAppDelegate : UIResponder <UIApplicationDelegate, FBSessionDelegate>
@property (strong, nonatomic) UIWindow *window;
@property (strong, nonatomic) SCLViewController *viewController;
@property (strong, nonatomic) Facebook *facebook;
@end
и .m:
#import "SCLAppDelegate.h"
#import "SCLViewController.h"
@implementation SCLAppDelegate
@synthesize window = _window;
@synthesize viewController = _viewController;
@synthesize facebook = _facebook;
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
_facebook = [[Facebook alloc] initWithAppId:@"MY-APP-ID" andDelegate:self];
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
if ([defaults objectForKey:@"FBAccessTokenKey"]
&& [defaults objectForKey:@"FBExpirationDateKey"]) {
_facebook.accessToken = [defaults objectForKey:@"FBAccessTokenKey"];
_facebook.expirationDate = [defaults objectForKey:@"FBExpirationDateKey"];
}
if (![_facebook isSessionValid]) {
[_facebook authorize:nil];
}
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
// Override point for customization after application launch.
self.viewController = [[SCLViewController alloc] initWithNibName:@"SCLViewController" bundle:nil];
self.window.rootViewController = self.viewController;
[self.window makeKeyAndVisible];
return YES;
}
- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url
sourceApplication:(NSString *)sourceApplication annotation:(id)annotation {
return [_facebook handleOpenURL:url];
}
- (void)fbDidLogin {
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
[defaults setObject:[_facebook accessToken] forKey:@"FBAccessTokenKey"];
[defaults setObject:[_facebook expirationDate] forKey:@"FBExpirationDateKey"];
[defaults synchronize];
}
@end