Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ ΠΊΠ½ΠΈΠ³ΠΈ ΠΎΠ½Π»Π°ΠΉΠ½ Π½Π° Bookidrom.ru! БСсплатныС ΠΊΠ½ΠΈΠ³ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠ»ΠΈΠΊΠ΅

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ Β«iOS. ΠŸΡ€ΠΈΠ΅ΠΌΡ‹ программирования». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 104

Автор Π’Π°Π½Π΄Π°Π΄ Нахавандипур

/* Π‘Сйчас попытаСмся ΡΠ΅Ρ€ΠΈΠ°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ JSON Π² ΡΠ»ΠΎΠ²Π°Ρ€ΡŒ. */

error = nil;

id jsonObject = [NSJSONSerialization

JSONObjectWithData: jsonData

options: NSJSONReadingAllowFragments

error:&error];


if (jsonObject!= nil &&

error == nil){


NSLog(@"Successfully deserialized…");


if ([jsonObject isKindOfClass: [NSDictionary class]]){


NSDictionary *deserializedDictionary = (NSDictionary *)jsonObject;

NSLog(@"Deserialized JSON Dictionary = %@", deserializedDictionary);


}

else if ([jsonObject isKindOfClass: [NSArray class]]){


NSArray *deserializedArray = (NSArray *)jsonObject;

NSLog(@"Deserialized JSON Array = %@", deserializedArray);


}


else {

/* Π‘Ρ‹Π» Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π΅Π½ ΠΊΠ°ΠΊΠΎΠΉ-Ρ‚ΠΎ Π΄Ρ€ΡƒΠ³ΠΎΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚. ΠœΡ‹ Π½Π΅ Π·Π½Π°Π΅ΠΌ,

Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π°Ρ‚ΡŒ Π² этой ситуации, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ дСсСриализатор

Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ словари ΠΈΠ»ΠΈ массивы. */

}


}

else if (error!= nil){

NSLog(@"An error happened while deserializing the JSON data.");

}


Если Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΠΈΡ‚ΡŒ этот ΠΊΠΎΠ΄ с ΠΊΠΎΠ΄ΠΎΠΌ ΠΈΠ· Ρ€Π°Π·Π΄Π΅Π»Π° 8.9, Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ сначала ΡΠ΅Ρ€ΠΈΠ°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΡΠ»ΠΎΠ²Π°Ρ€ΡŒ Π² ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ JSON, Π΄Π΅ΡΠ΅Ρ€ΠΈΠ°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ JSON ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ Π² ΡΠ»ΠΎΠ²Π°Ρ€ΡŒ, Π° ΠΏΠΎΡ‚ΠΎΠΌ вывСсти Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ Π½Π° консоль, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ±Π΅Π΄ΠΈΡ‚ΡŒΡΡ, Ρ‡Ρ‚ΠΎ всС Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π½ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎ:


β€” (BOOL) application:(UIApplication *)application

didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{

NSDictionary *dictionary =

@{

@"First Name": @"Anthony",

@"Last Name": @"Robbins",

@"Age": @51,

@"Children": @[

@"Anthony's Son 1",

@"Anthony's Daughter 1",

@"Anthony's Son 2",

@"Anthony's Son 3",

@"Anthony's Daughter 2",

],

};


NSError *error = nil;

NSData *jsonData = [NSJSONSerialization

dataWithJSONObject: dictionary

options: NSJSONWritingPrettyPrinted

error:&error];


if ([jsonData length] > 0 &&

error == nil){


NSLog(@"Successfully serialized the dictionary into data.");


/* Π‘Сйчас попытаСмся ΡΠ΅Ρ€ΠΈΠ°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ JSON Π² ΡΠ»ΠΎΠ²Π°Ρ€ΡŒ. */

error = nil;

id jsonObject = [NSJSONSerialization

JSONObjectWithData: jsonData

options: NSJSONReadingAllowFragments

error:&error];


if (jsonObject!= nil &&

error == nil){


NSLog(@"Successfully deserialized…");


if ([jsonObject isKindOfClass: [NSDictionary class]]){


NSDictionary *deserializedDictionary = (NSDictionary *)jsonObject;

NSLog(@"Deserialized JSON Dictionary = %@", deserializedDictionary);


}

else if ([jsonObject isKindOfClass: [NSArray class]]){


NSArray *deserializedArray = (NSArray *)jsonObject;

NSLog(@"Deserialized JSON Array = %@", deserializedArray);


}

else {

/* Π‘Ρ‹Π» Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π΅Π½ ΠΊΠ°ΠΊΠΎΠΉ-Ρ‚ΠΎ Π΄Ρ€ΡƒΠ³ΠΎΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚. ΠœΡ‹ Π½Π΅ Π·Π½Π°Π΅ΠΌ, Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π°Ρ‚ΡŒ

Π² этой ситуации, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ дСсСриализатор Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ словари

ΠΈΠ»ΠΈ массивы. */

}


}

else if (error!= nil){

NSLog(@"An error happened while deserializing the JSON data.");

}


}

else if ([jsonData length] == 0 &&

error == nil){


NSLog(@"No data was returned after serialization.");


}

else if (error!= nil){


NSLog(@"An error happened = %@", error);


}

self.window = [[UIWindow alloc] initWithFrame:

[[UIScreen mainScreen] bounds]];

// Π’ΠΎΡ‡ΠΊΠ° пСрСопрСдСлСния для Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ настройки послС запуска прилоТСния

self.window.backgroundColor = [UIColor whiteColor];

[self.window makeKeyAndVisible];

return YES;

}


ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ options ΠΌΠ΅Ρ‚ΠΎΠ΄Π° JSONObjectWithData: options: error: ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ ΠΎΠ΄Π½ΠΎ ΠΈΠ»ΠΈ нСсколько ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ:

β€’ NSJSONReadingMutableContainers β€” ΡΠ»ΠΎΠ²Π°Ρ€ΡŒ ΠΈΠ»ΠΈ массив, Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π΅Π½Π½Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ JSONObjectWithData: options: error:, Π±ΡƒΠ΄Π΅Ρ‚ измСняСмым. Π˜Π½Ρ‹ΠΌΠΈ словами, этот ΠΌΠ΅Ρ‚ΠΎΠ΄ Π±ΡƒΠ΄Π΅Ρ‚ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Ρ‚ΡŒ Π»ΠΈΠ±ΠΎ экзСмпляр NSMutableArray, Π»ΠΈΠ±ΠΎ экзСмпляр NSMutableDictionary Π² ΠΏΡ€ΠΎΡ‚ΠΈΠ²ΠΎΠΏΠΎΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ измСняСмому массиву ΠΈΠ»ΠΈ ΡΠ»ΠΎΠ²Π°Ρ€ΡŽ;

β€’ 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.