VKontakte рд╕рд╛рдорд╛рдЬрд┐рдХ рдиреЗрдЯрд╡рд░реНрдХ рдкрд░ рдлрд╝реЛрдЯреЛ рдФрд░ рдкрд╛рда рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╕реНрдЯрдо рдпреВрдЖрдИрдПрдХреНрдЯрд┐рд╡рд┐рдЯреА рдХрд╛ рдирд┐рд░реНрдорд╛рдг

рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рдЕрдЧрд▓реЗ рд╕рдВрд╕реНрдХрд░рдг рдкрд░ рдХрд╛рдо рдХрд░рддреЗ рд╕рдордп, рдХрд╛рд░реНрдп рдорд╛рдирдХ рдирд┐рдпрдВрддреНрд░рдХ UIActivityViewController рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕реЛрд╢рд▓ рдиреЗрдЯрд╡рд░реНрдХ VKontakte рдкрд░ рдлрд╝реЛрдЯреЛ рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрддреНрдкрдиреНрди рд╣реБрдЖред

рдЫрд╡рд┐

рдПрдХ рдиреЗрдЯрд╡рд░реНрдХ рдЦреЛрдЬ рдиреЗ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкрд░рд┐рдгрд╛рдо рд▓реМрдЯрд╛рдП:
  1. рдХреЛрдИ рдкреВрд░реНрдг рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдирд╣реАрдВ рдорд┐рд▓рд╛
  2. рдПрдХ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рдПрд╕рдбреАрдХреЗ VKontakte рд╣реИ : рдЗрд╕рдореЗрдВ рдкреНрд░рд╛рдзрд┐рдХрд░рдг рддрдВрддреНрд░ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ, рдЪрд┐рддреНрд░реЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди UIActivityViewController рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рдХреНрд▓рд╛рд╕ рдирд╣реАрдВ рд╣реИ
  3. рдХрд╕реНрдЯрдо UIActivity рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП Apple рдкреНрд░рд▓реЗрдЦрди рд╣реИ



рд╡реАрдХреЗ рдПрд╕рдбреАрдХреЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рддреИрдпрд╛рд░реА


рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ рдХрд┐ рдЖрдк рд╡реАрдХреЗ рдПрд╕рдбреАрдХреЗ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░реЗрдВ, рдЖрдкрдХреЛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдирд┐рд░реНрдорд╛рдг рдкреГрд╖реНрда рдкрд░ рдПрдХ рд╕реНрдЯреИрдВрдбрдЕрд▓реЛрди рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдЖрдИрдбреА рд╕рд╣реЗрдЬреЗрдВ рдФрд░ "iOS рдХреЗ рд▓рд┐рдП рдРрдк рдмрдВрдбрд▓" рдлрд╝реАрд▓реНрдб рднрд░реЗрдВред
VK App рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди URL рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдирд╛ рд╣реЛрдЧрд╛:



рдПрд╕рдбреАрдХреЗ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░реЗрдВ


рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╢реБрд░реВ рдХрд░рддреЗ рд╕рдордп рдЖрдкрдХреЛ рдПрд╕рдбреАрдХреЗ рдХреЛ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝ рдХрд░рдирд╛ рд╣реЛрдЧрд╛
[VKSdk рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝: рдбреЗрд▓реАрдЧреЗрдЯ рдФрд░AppId: APP_ID];

рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдХреЗ рд▓рд┐рдП, рдЖрдк рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
[рд╡реАрдХреЗрдПрд╕рдбреАрдХреЗ рдЕрдзрд┐рдХреГрдд: рдЧреБрдВрдЬрд╛рдЗрд╢];

рд╕рдлрд▓ рд╣реЛрдиреЗ рдкрд░, рдкреНрд░рддрд┐рдирд┐рдзрд┐ рдХреЛ рдПрдХ рд╡рд┐рдзрд┐ рдХрд╣рд╛ рдЬрд╛рдПрдЧрд╛
- (рд╢реВрдиреНрдп) vkSdkDidReceiveNewToken: (VKAccessToken *) newToken;

рддреНрд░реБрдЯрд┐ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдиреЗ рдкреНрд░рд╛рдзрд┐рдХрд░рдг рд╕реЗ рдЗрдирдХрд╛рд░ рдХрд░ рджрд┐рдпрд╛ рд╣реИ)
- (рд╢реВрдиреНрдп) vkSdkUserDeniedAccess: (VKError *) рдкреНрд░рд╛рдзрд┐рдХрд╛рд░реА


рд╡реАрдХреЗ рдХреЗ рд▓рд┐рдП рдпреВрдЖрдИрдПрдХреНрдЯрд┐рд╡рд┐рдЯреА


Apple рдкреНрд░рд▓реЗрдЦрди рдХреЗ рдмрд╛рдж, UIActivity рд╡рдВрд╢рдЬ рдмрдирд╛рдПрдВ:

#import <UIKit/UIKit.h> @interface VKontakteActivity : UIActivity - (id)initWithParent:(UIViewController*)parent; @end 

рдХреИрдкреНрдЪрд╛ рдЗрдирдкреБрдЯ, рдореИрд╕реЗрдЬ рдЖрдЙрдЯрдкреБрдЯ рдЖрджрд┐ рдХреЗ рд▓рд┐рдП рд╕рд╣рд╛рдпрдХ рдЕрднрд┐рднрд╛рд╡рдХ рдирд┐рдпрдВрддреНрд░рдХ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред

рдЕрдЧрд▓рд╛, рд╣рдо рдпреВрдЖрдИрдПрдХреНрдЯрд┐рд╡рд┐рдЯреА рддрддреНрд╡ (рдкреНрд░рдХрд╛рд░, рдирд╛рдо рдФрд░ рдЖрдЗрдХрди) рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рддрд░реАрдХреЛрдВ рдХреЛ рдлрд┐рд░ рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддреЗ рд╣реИрдВ
 - (NSString *)activityType { return @"VKActivityTypeVKontakte"; } - (NSString *)activityTitle { return @""; } - (UIImage *)activityImage { return [UIImage imageNamed:@"vk_activity"]; } 


рдЬрд╛рдБрдЪ рдХрд░реЗрдВ рдХрд┐ рдХреНрдпрд╛ рд╣рдорд╛рд░реА рдХрдХреНрд╖рд╛ рд╕рд╛рдЭрд╛ рдЧрддрд┐рд╡рд┐рдзрд┐ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддреА рд╣реИред
 - (BOOL)canPerformWithActivityItems:(NSArray *)activityItems { for (UIActivityItemProvider *item in activityItems) { if ([item isKindOfClass:[UIImage class]]) { return YES; } else if ([item isKindOfClass:[NSString class]]) { return YES; } } return NO; } 


рд╣рдореЗрдВ рдЧрддрд┐рд╡рд┐рдзрд┐ рдпрд╛рдж рд╣реИред рд╣рдорд╛рд░реЗ рджреНрд╡рд╛рд░рд╛ рд╕рдорд░реНрдерд┐рдд:
 - (void)prepareWithActivityItems:(NSArray *)activityItems { for (id item in activityItems) { if ([item isKindOfClass:[NSString class]]) { self.string = item; } else if([item isKindOfClass:[UIImage class]]) { self.image = item; } else if([item isKindOfClass:[NSURL class]]) { self.URL = item; } } } 


рд╣рдорд╛рд░реА рдпреВрдЖрдИрдПрдХреНрдЯрд┐рд╡рд┐рдЯреА рдХреЛ рдЪреБрдирддреЗ рд╕рдордп, рд╣рдо рдЬрд╛рдБрдЪрддреЗ рд╣реИрдВ рдХрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЕрдзрд┐рдХреГрдд рд╣реИ рдпрд╛ рдирд╣реАрдВ:
 - (void)performActivity{ [VKSdk initializeWithDelegate:self andAppId:@"3974615"]; if ([VKSdk wakeUpSession]) { [self postToWall]; } else{ [VKSdk authorize:@[VK_PER_WALL, VK_PER_PHOTOS]]; } } 


рд╕рдлрд▓ рдкреНрд░рд╛рдзрд┐рдХрд░рдг рд╣реЛрдиреЗ рдкрд░, рд╣рдо рдПрдХ рдкреЛрд╕реНрдЯ рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд░рддреЗ рд╣реИрдВред
 -(void)postToWall{ [self begin]; if (self.image) { [self uploadPhoto]; } else{ [self uploadText]; } } //    -(void)uploadText{ [self postParameters:@{ VK_API_FRIENDS_ONLY : @(0), VK_API_OWNER_ID : [VKSdk getAccessToken].userId, VK_API_MESSAGE : self.string}]; } //    -(void)postParameters:(NSDictionary *)params{ VKRequest *post = [[VKApi wall] post:params]; [post executeWithResultBlock: ^(VKResponse *response) { NSNumber * postId = response.json[@"post_id"]; [[UIApplication sharedApplication] openURL:[NSURL URLWithString:[NSString stringWithFormat:@"http://vk.com/wall%@_%@", [VKSdk getAccessToken].userId, postId]]]; [self end]; } errorBlock: ^(NSError *error) { NSLog(@"Error: %@", error); [self end]; }]; } 


рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдпрджрд┐ рдкреЛрд╕реНрдЯ рдореЗрдВ рдХреЛрдИ рдЪрд┐рддреНрд░ рд╣реИ, рддреЛ рдЗрд╕реЗ рд╕рд░реНрд╡рд░ рдкрд░ рдкреВрд░реНрд╡-рдЕрдкрд▓реЛрдб рдХрд░реЗрдВред
 - (void)uploadPhoto { NSString *userId = [VKSdk getAccessToken].userId; //     VKRequest *request = [VKApi uploadWallPhotoRequest:self.image parameters:[VKImageParameters jpegImageWithQuality:1.f] userId:[userId integerValue] groupId:0]; [request executeWithResultBlock: ^(VKResponse *response) { VKPhoto *photoInfo = [(VKPhotoArray*)response.parsedModel objectAtIndex:0]; NSString *photoAttachment = [NSString stringWithFormat:@"photo%@_%@", photoInfo.owner_id, photoInfo.id]; //    [self postParameters:@{ VK_API_ATTACHMENTS : photoAttachment, VK_API_FRIENDS_ONLY : @(0), VK_API_OWNER_ID : userId, VK_API_MESSAGE : [NSString stringWithFormat:@"%@ %@",self.string, [self.URL absoluteString]]}]; } errorBlock: ^(NSError *error) { NSLog(@"Error: %@", error); [self end]; }]; } 


VKontakteActivity рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП рддрд╕реНрд╡реАрд░реЗрдВ рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд░рдиреЗ рдХрд╛ рдЙрджрд╛рд╣рд░рдг:
  NSArray *items = @[[UIImage imageNamed:@"example.jpg"], @"Example" , [NSURL URLWithString:@"https://www.youtube.com/watch?v=S59fDUZIuKY"]]; VKontakteActivity *vkontakteActivity = [[VKontakteActivity alloc] initWithParent:self]; UIActivityViewController *activityViewController = [[UIActivityViewController alloc] initWithActivityItems:items applicationActivities:@[vkontakteActivity]]; [self presentViewController:activityViewController animated:YES completion:nil]; 


рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХрд╛ рд╕реНрд░реЛрдд рдХреЛрдб рдпрд╣рд╛рдВ рдбрд╛рдЙрдирд▓реЛрдб рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ ред

Source: https://habr.com/ru/post/In214637/


All Articles