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

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

Жанры

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.

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

Элизиум. Аликс и монеты

Андерсон Александр
1. Элизиум
Фантастика:
фэнтези
сказочная фантастика
8.98
рейтинг книги
Элизиум. Аликс и монеты

Третий

INDIGO
Фантастика:
космическая фантастика
попаданцы
5.00
рейтинг книги
Третий

Мечник Вернувшийся 1000 лет спустя. Том 2

Ткачев Андрей Юрьевич
2. Вернувшийся мечник
Фантастика:
аниме
фэнтези
попаданцы
5.00
рейтинг книги
Мечник Вернувшийся 1000 лет спустя. Том 2

Андер Арес

Грехов Тимофей
1. Андер Арес
Фантастика:
рпг
аниме
фэнтези
фантастика: прочее
5.00
рейтинг книги
Андер Арес

Граф

Ланцов Михаил Алексеевич
6. Помещик
Фантастика:
альтернативная история
5.00
рейтинг книги
Граф

Учитель из прошлого тысячелетия

Еслер Андрей
6. Соприкосновение миров
Фантастика:
фэнтези
попаданцы
5.00
рейтинг книги
Учитель из прошлого тысячелетия

Страж Кодекса. Книга V

Романов Илья Николаевич
5. КО: Страж Кодекса
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Страж Кодекса. Книга V

На границе империй. Том 8

INDIGO
12. Фортуна дама переменчивая
Фантастика:
космическая фантастика
попаданцы
5.00
рейтинг книги
На границе империй. Том 8

Родословная. Том 1

Ткачев Андрей Юрьевич
1. Линия крови
Фантастика:
городское фэнтези
аниме
фэнтези
фантастика: прочее
5.00
рейтинг книги
Родословная. Том 1

Жена неверного ректора Полицейской академии

Удалова Юлия
Любовные романы:
любовно-фантастические романы
4.25
рейтинг книги
Жена неверного ректора Полицейской академии

Последний реанорец. Том III

Павлов Вел
2. Высшая Речь
Фантастика:
фэнтези
попаданцы
5.25
рейтинг книги
Последний реанорец. Том III

Кодекс Крови. Книга VIII

Борзых М.
8. РОС: Кодекс Крови
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Кодекс Крови. Книга VIII

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

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

На границе империй. Том 10. Часть 1

INDIGO
Вселенная EVE Online
Фантастика:
космическая фантастика
попаданцы
5.00
рейтинг книги
На границе империй. Том 10. Часть 1