Метод handleOpenURL FBConnect не вызывается моим AppDelegate - PullRequest
3 голосов
/ 02 июня 2011

Я внедрил FBConnect SDK в свое приложение, и он отлично работает на симуляторе.Затем я соответствующим образом изменил файл моего приложения .plist и добавил необходимый метод в мой AppDelegate, когда Facebook установлен на устройстве:

- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url {
NSLog(@"handleOpenURL Method was called and sent the following:");
NSString *urlString = [NSString stringWithContentsOfURL:(NSURL *)url];     
NSLog(@"URL String: %@", urlString);
return [[flipsideViewController facebook] handleOpenURL:url];
}

Из приведенных выше NSLogs и замечание, что мое приложение возвращается вНа первом плане после авторизации доступа через Facebook я делаю вывод, что приложение FB соответствующим образом передает управление моему приложению.К сожалению, метод «handleOpenURL: url» Facebook.m фактически не вызывается, когда я запрашиваю в моем AppDelegate (то есть ни один из приведенных ниже NSLogs не отображается).

- (BOOL)handleOpenURL:(NSURL *)url {
// If the URL's structure doesn't match the structure used for Facebook authorization, abort.
NSLog(@"handleOpenURL was handled by SDK. Good!");
if (![[url absoluteString] hasPrefix:[self getOwnBaseUrl]]) {
NSLog(@"handleOpenURL structure doesn't match the structure used for Facebook authorization. Aborting.");
return NO;
}
//...

В результате контроллер представления моего приложения(где я нажал кнопку «Фейсбук» для начала) просто возвращается на экран, и код, который я поместил в метод «fbDidLogin» (используемый в контроллере представления для публикации на стене пользователя), никогда не вызывается, как втренажер.

Что я пропускаю?Какая, если таковая имеется, другая информация необходима для решения этой проблемы?Буду очень признателен за любую помощь, так как я некоторое время боролся с этим.

Важные краткие замечания: 1.) Приложение запускается на симуляторе так, как нужно.2.) handleOpenURL Метод не вызывается, когда я запрашиваю его у моего AppDelegate.3.) Я не получаю никаких ошибок / предупреждений.4.) Я могу запустить DemoApp на своем устройстве, и я заметил, что метод handleOpenURL вызывается соответствующим образом по запросу «DemoAppAppDelegate».

Заранее спасибо!

1 Ответ

3 голосов
/ 07 июня 2011

В итоге мне пришлось сделать свой объект Facebook одноэлементным (хранится в appDelegate).Не совсем уверен, почему это было необходимо, поскольку я не использовал объект fb в нескольких viewControllers.Прокомментируйте, если знаете, почему это было необходимо.

Для получения дополнительной информации см. Следующие ссылки:

handleOpenUrl и приложение TabBar

FacebookSDK: вызов из нескольких viewControllers

Какао с любовью: синглтоны

...