Чтение онлайн

на главную - закладки

Жанры

iOS. Приемы программирования

Нахавандипур Вандад

Шрифт:

• NSJSONReadingMutableLeaves — листовые значения будут инкапсулированы в экземпляры NSMutableString;

• NSJSONReadingAllowFragments — обеспечивает десериализацию данных JSON, чей корневой объект верхнего уровня не является массивом или словарем.

См. также

Раздел 11.9.

11.11. Включение в приложения функций социального обмена контентом

Постановка задачи

Требуется предоставить в приложении функции социального обмена контентом. Например, у пользователя мобильного устройства должна быть возможность написать твит или обновить статус в Facebook.

Решение

Внедрите в ваше приложение фреймворк Social и воспользуйтесь классом SLComposeViewController для обеспечения социального обмена сообщениями, например твитами.

Обсуждение

Класс SLComposeViewController входит в состав фреймворка Social. Он приспособлен к работе с модулями компилятора LLVM. Чтобы приступить к использованию этого фреймворка, вам всего лишь потребуется импортировать в проект обобщающий заголовок, вот так:

#import «ViewController.h»

#import <Social/Social.h>

@implementation ViewController

Поскольку Apple обогащает свой SDK новыми возможностями социального обмена контентом, вы можете запрашивать фреймворк Social и прямо во время выполнения узнавать, какой из сервисов доступен на устройстве, на котором работает ваше приложение. Поскольку набор таких сервисов может варьироваться от устройства к устройству, перед попыткой использовать тот или иной сервис обязательно следует убедиться, что нужный сервис работает. Чтобы запросить у iOS такую информацию, воспользуйтесь методом класса isAvailableForServiceType:, относящимся к классу SLComposeViewController. Параметр, передаваемый этому методу, относится к типу NSString, а вот список некоторых валидных параметров, которые можно передать этому методу:

• SOCIAL_EXTERN NSString *const SLServiceTypeTwitter;

• SOCIAL_EXTERN NSString *const SLServiceTypeFacebook;

• SOCIAL_EXTERN NSString *const SLServiceTypeSinaWeibo;

• SOCIAL_EXTERN NSString *const SLServiceTypeTencentWeibo;

• SOCIAL_EXTERN NSString *const SLServiceTypeLinkedIn.

Убедившись, что нужный сервис доступен, вы можете воспользоваться методом класса composeViewControllerForServiceType:, относящимся к классу SLComposeViewController. Так вы получаете новый экземпляр контроллера вида для социального обмена. Далее все совсем просто. Вам потребуется всего лишь использовать в контроллере для социального обмена один или несколько следующих методов:

• setInitialText: — задает строку, которой вы хотите поделиться;

• addImage: — добавляет изображение, которое должно прикрепляться к вашему посту;

• addURL: — добавляет URL, которым можно делиться наряду с текстом и изображением.

Экземпляр класса SLComposeViewController также обладает очень удобным свойством completionHandler. Оно представляет собой блоковый объект типа SLComposeViewControllerCompletionHandler. Этот обработчик завершения будет вызываться всякий раз, когда пользователь успешно завершает процесс обмена контентом (то есть пользователь успешно отправляет пост, который iOS доставляет на сайт Twitter, Facebook и др.) либо закрывает диалоговое окно. Этому методу будет передаваться параметр типа SLComposeViewControllerResult. Он обозначает тип произошедшего события — например, успех или отмену операции.

Итак, довольно слов, переходим к сути. Далее будет рассмотрен фрагмент кода, который пытается определить, обладает ли данное устройство возможностями социального обмена контентом через Twitter. Если это так, код создает простой твит с картинкой и URL, после чего отображает для пользователя диалоговое окно Twitter, готовое к отправке сообщения:

— (void) viewDidAppear:(BOOL)animated{

[super viewDidAppear: animated];

if ([SLComposeViewController

isAvailableForServiceType: SLServiceTypeTwitter]){

SLComposeViewController *controller =

[SLComposeViewController

composeViewControllerForServiceType: SLServiceTypeTwitter];

[controller setInitialText:@"MacBook Airs are amazingly thin!"];

[controller addImage: [UIImage imageNamed:@"MacBookAir"]];

[controller addURL: [NSURL URLWithString:@"http://www.apple.com/"]];

controller.completionHandler = ^(SLComposeViewControllerResult result){

NSLog(@"Completed");

};

[self presentViewController: controller animated: YES completion: nil];

} else {

NSLog(@"The twitter service is not available");

}

}

Запустив это приложение на устройстве, где поддерживается работа с Twitter (такая интеграция обеспечивается с помощью соответствующих настроек iOS), вы увидите картинку, напоминающую рис. 11.2.

Рис. 11.2. Создание простого твита с помощью фреймворка Social

Обладая этой информацией, мы можем создавать и разные другие сообщения — например, обновления для учетной записи Facebook. На самом деле, как объяснялось ранее, вам всего лишь потребуется определить во время исполнения, активизирован ли на устройстве искомый сервис, а потом попытаться воспользоваться им — добавить в запросе текст, изображения, URL.

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

См. также

Раздел 11.0.

Поделиться:
Популярные книги

Казачий князь

Трофимов Ерофей
5. Шатун
Фантастика:
боевая фантастика
попаданцы
альтернативная история
5.00
рейтинг книги
Казачий князь

Подросток

Достоевский Федор Михайлович
Проза:
русская классическая проза
9.09
рейтинг книги
Подросток

Бастард Императора. Том 5

Орлов Андрей Юрьевич
5. Бастард Императора
Фантастика:
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Бастард Императора. Том 5

Газлайтер. Том 25

Володин Григорий Григорьевич
25. История Телепата
Фантастика:
боевая фантастика
попаданцы
аниме
5.00
рейтинг книги
Газлайтер. Том 25

Бастард Императора. Том 12

Орлов Андрей Юрьевич
12. Бастард Императора
Фантастика:
попаданцы
аниме
фэнтези
фантастика: прочее
5.00
рейтинг книги
Бастард Императора. Том 12

Воронцов. Перезагрузка. Книга 2

Тарасов Ник
2. Воронцов. Перезагрузка
Фантастика:
попаданцы
альтернативная история
фэнтези
5.00
рейтинг книги
Воронцов. Перезагрузка. Книга 2

Вечный. Книга VII

Рокотов Алексей
7. Вечный
Фантастика:
боевая фантастика
рпг
попаданцы
5.00
рейтинг книги
Вечный. Книга VII

Наследник для дона мафии

Тоцка Тала
2. Наследники мафии
Любовные романы:
остросюжетные любовные романы
эро литература
5.00
рейтинг книги
Наследник для дона мафии

Газлайтер. Том 22

Володин Григорий Григорьевич
22. История Телепата
Фантастика:
боевая фантастика
попаданцы
фэнтези
5.00
рейтинг книги
Газлайтер. Том 22

Путь разума. Том 12

Морфиус
12. Путь Разума
Фантастика:
рпг
уся
фэнтези
сянься
5.00
рейтинг книги
Путь разума. Том 12

Изменяющий-Механик. Компиляция. Книги 1-18

Усманов Хайдарали
Собрание сочинений
Фантастика:
боевая фантастика
космическая фантастика
5.00
рейтинг книги
Изменяющий-Механик. Компиляция. Книги 1-18

Киберпространство

Ливадный Андрей Львович
43. Экспансия: История Галактики
Фантастика:
космическая фантастика
7.69
рейтинг книги
Киберпространство

Повелители сумерек

Первушина Елена Владимировна
Фантастика:
фэнтези
ужасы и мистика
юмористическая фантастика
детективная фантастика
6.00
рейтинг книги
Повелители сумерек

Грон. Трилогия

Злотников Роман Валерьевич
Грон
Фантастика:
боевая фантастика
попаданцы
8.48
рейтинг книги
Грон. Трилогия