2013-03-22 1 views
4

Работая с iOS Facebook SDK 3.0, ему необходимо определить FacebookAppID и соответствующую схему URL-адреса с ним в info.plist приложения. Я хочу определить их удаленно (запрос на мой собственный сервер для id приложения). Итак, 2 разных вопроса:iOS Facebook SDK - определить FacebookAppID удаленно

  1. Могу ли я изменить info.plist приложения во время выполнения? Или я могу определить FacebookApID и схему URL в другом plist, где я могу изменить plist или даже создать новый пользовательский файл plist?
  2. Есть ли другой способ определения URL-схемы и идентификатора приложения, кроме использования info.plist для Facebook SDK 3.0?

ответ

13

1.1 Нет, вы не можете изменить файл Info.plist во время выполнения.

1.2 Нет, вы не можете загрузить другой файл plist, чтобы переопределить настройки в Info.plist.

2.1 Да, вы можете определить FacebookApID без изменения файла Info.plist, позвонив по номеру [FBSettings setDefaultAppID:@"Your Facebook App ID"]; См. Исходный код FBSettings.h в Facebook iOS SDK.

2.2 Нет. Схема URL должна быть определена в Info.plist, чтобы iOS мог ее распознать. Я считаю, что URL-схема считывается iOS при установке вашего приложения и кэшируется в другом месте в системе. Даже если вы можете изменить свой Info.plist, система не заберет вашу новую схему URL. Но не волнуйтесь, есть обходное решение для аутентификации Facebook без использования схем URL! Мы можем заставить Facebook iOS SDK использовать UIWebView для входа в систему, см. this stackoverflow question.

+0

Отличный ответ! 10x! – gran33

+1

Проблема решения 2.1 - это приложение «*** Terminating» из-за неперехваченного исключения «InvalidOperationException», причина: «fb123123123123 не зарегистрирован как схема URL. Добавьте его в свой Info.plist '. Но #import и [FBSDKSettings setAppID: @ "123123123123"]; отлично работает – WINSergey

+0

@WINSergey Кажется, вы используете Facebook SDK 4+, этот ответ был написан более 3 лет назад для Facebook SDK 3. – howanghk

2

Это не возможно, по нескольким причинам:

  1. Вам не разрешено изменять вам файл info.plist IOS приложения во время выполнения.
  2. У вас должно быть приложение для Facebook, которое вы не можете получить ID от длиной, прежде чем пытаться отправить свое приложение. Как вы тестируете приложение прямо сейчас?
  3. Идентификатор приложения Facebook привязан к схеме URL, которую приложение использует для завершения потока OAuth Facebook. Схемы URL-адресов приложения iOS определены в файле info.plist, который, опять же, вы не можете изменить.
  4. Возможность произвольно установить идентификатор приложения Facebook - это проблема безопасности, так как это может показаться тривиальным, поскольку оно представляет собой чужой Facebook-приложение.

Это всего лишь горстка, которую я мог бы придумать с головы, я уверен, что их гораздо больше.