iOS Facebook API - Как заполнить UIWebView - PullRequest
0 голосов
/ 07 января 2012

Я пытаюсь получить только часть информации от Facebook, но я не хочу использовать API-интерфейс Facebook по умолчанию (поскольку он не позволяет автоматически заполнять текстовое поле при создании канала).

Итак, я создаю собственное представление, которое имеет текстовое представление и кнопки «Поделиться» и «Отмена», но я также хочу показать информацию о приложении. Я не уверен, как это сделать.

Изображение ниже - это то, что представляет собой FBDialog (часть родного FB API). То, что я хочу, это показать ТОЛЬКО информацию в красном поле. Это смесь заданных вручную параметров, а также что-то от FB о самом приложении («через ...»).

Итак, мой вопрос, как можно извлечь "via for iOS" из FB (обратите внимание, что в коде это не руководство, а все остальное в красном поле) и поместить его в uiwebview (я предполагаю, Это единственный путь)? Или я могу даже получить просто этой информации и отобразить информацию без указания действия, такого как «подача» (которое также принесет текстовое поле из FB)?

Вот код, который делает это диалоговое окно всплывающим:

    currentAPICall = kDialogFeedUser;
SBJSON *jsonWriter = [[SBJSON new] autorelease];

// The action links to be shown with the post in the feed
NSArray* actionLinks = [NSArray arrayWithObjects:[NSDictionary dictionaryWithObjectsAndKeys:
                                                       @"Get Started",@"name",@"http://m.facebook.com/apps/hackbookios/",@"link", nil], nil];
NSString *actionLinksStr = [jsonWriter stringWithObject:actionLinks];
// Dialog parameters
NSMutableDictionary *params = [NSMutableDictionary dictionaryWithObjectsAndKeys:
                               @"I'm using the Hackbook for iOS app", @"name",
                               @"Hackbook for iOS.", @"caption",
                               @"Check out Hackbook for iOS to learn how you can make your iOS apps social using Facebook Platform.", @"description",
                               @"http://m.facebook.com/apps/hackbookios/", @"link",
                               @"http://www.facebookmobileweb.com/hackbook/img/facebook_icon_large.png", @"picture",
                               actionLinksStr, @"actions",
                               nil];

HackbookAppDelegate *delegate = (HackbookAppDelegate *) [[UIApplication sharedApplication] delegate];  
[[delegate facebook] dialog:@"feed"
        andParams:params
      andDelegate:self];

enter image description here

1 Ответ

0 голосов
/ 08 января 2012

Хорошо, я наконец-то понял, как это сделать, но пока это единственный ответ, который у меня есть. Если у кого-то есть лучший ответ, пожалуйста, напишите, и я отмечу его как правильный.

В итоге я создал UIView, который содержит несколько вещей. По сути, я все еще использую то, что вы видите на картинке выше, но я покрываю верхнюю часть, чтобы видеть только нижнюю область, которая мне небезразлична.

От нижнего слоя к верхнему слою, вот что имеет мой XIB-файл:

  1. Основной UIView - контейнер, связанный с классом
  2. UIWebView для содержания канала FB
  3. UIView с белым фоном (или любым другим, чтобы соответствовать цвету UIView в # 1 - я использую белый b / c, это то, что Facebook использует в своем ответном HTML в UIWebView). Этот белый фон идет за UITextView (# 5) и UIView "бордюром" (# 4). Я делаю это так, чтобы я мог «заблокировать» верхнюю часть ответа от Facebook и показывать только нижнюю часть (красным контуром на рисунке выше).
  4. UIView, чтобы идти за представлением UIText - серый фон на 2 пикселя шире и на 2 пикселя выше, чем UITextView, чтобы создать эффект границы в 1 пиксель для всех краев UITextView. Да, я уверен, что есть лучший способ, но это все один большой взлом, поэтому я взломал. :)
  5. UITextView, чтобы я мог предварительно заполнить текст; у этого текстового представления есть цвет фона, который должен соответствовать цвету фона UIView в # 1 выше. Я сделал это, чтобы создать эффект серой границы без рисования. Так что в моем случае UITextView имеет белый фон, как и основной вид в # 1.

Теперь в коде (в моем случае я изменяю поведение по умолчанию набора, который выполняет большую часть тяжелой работы), я делаю следующее:

  1. Настройка ссылок действий FB и параметров FB
  2. Проверьте, авторизовано ли приложение для использования Facebook (если нет, отобразите другое диалоговое окно)
  3. Создание класса для нового созданного мной файла XIB
  4. ** Это важно - сгенерируйте URL с помощью кода из API Facebook (буквально есть метод для этого: + (NSURL*)generateURL:(NSString*)baseURL params:(NSDictionary*)params
  5. Создание объекта запроса URL: NSMutableURLRequest* theRequest = [NSMutableURLRequest requestWithURL:_loadingURL];
  6. Загрузить UIWebView в XIB и класс позади: [rootView.webView loadRequest:theRequest];
  7. Наконец, покажи вид!

Надеюсь, это поможет кому-то еще. Это действительно не должно было быть такой большой болью. Фактически, Facebook действительно должен позволять пользователям API предварительно заполнять текстовое поле, как они это делали раньше, но это отдельная напыщенная речь, которая может удержать меня от темы на некоторое время.

К вашему сведению, это мой последний взгляд:

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...