API Facebook - где создать экземпляр и как правильно реализовать handleOpenURL - PullRequest
8 голосов
/ 22 февраля 2011

Я работаю через API Facebook для своего приложения для iPhone и задаю два вопроса:

Кажется, что во всей документации / примерах все помещено в appDelegate: создание экземпляра объекта Facebook и авторизация в appDidFinishLaunching и переопределениеметод application: handleOpenURL.

В моем приложении я не хочу, чтобы что-либо происходило, если пользователь не переходит к определенному представлению и не нажимает кнопку.Я понимаю, что в этом представлении я создаю экземпляр объекта Facebook и запускаю авторизацию в методе обработчика кнопок, но как насчет обработки переопределения приложения: handleOpenURL?Мне пришлось бы использовать другой объект FB (созданный в моем делегате приложения), чем тот, который использовался в моем конкретном контроллере представления.

  1. Требует ли эта ситуация синглтона?Или это хорошее дизайнерское решение, позволяющее моему appDelegate создавать экземпляр объекта FB и получать к нему доступ там, где это необходимо в моей программе?

    В документах FB они говорят вам переопределить приложение: handleOpenURLМетод:

- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url {
    return [facebook handleOpenURL:url]; 
}
  1. Как написано, не означает ли это, что ваше приложение сможет открыть только один тип URL?Если ваше приложение должно отвечать более чем на один, вам нужно проанализировать параметр url, чтобы выяснить, какое действие предпринять, правильно?

Спасибо!

1 Ответ

9 голосов
/ 22 февраля 2011

1) Оба решения в порядке. Но, конечно, лучше использовать синглтон, особенно если вы собираетесь повторно использовать его в своем приложении.

2) application:handleOpenURL method: - это способ внешнего вызова приложения FB SDK позволяет аутентификацию из приложения Facebook, если установлено или Safari. После проверки подлинности ваше приложение вызывается с помощью этого обработчика. Это работает только с устройствами, поддерживающими многозадачность Это предпочтительный способ облегчить вход в систему и поделиться сессией Но это не обязательно ... Приложение может поддерживать несколько схем URL, объявленных в приложении, которые вы можете проверить (не проверено, но должно быть что-то подобное):

- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url {
  if ([url.scheme isEqualToString:@"fb<yourid>"])
    return [facebook handleOpenURL:url];
  else {
    // do what you want
    return YES;
  }
}
...