2015-11-16 4 views
0

Могу ли я показать фотографию instagram на моем UIImageView?Фотографии Instagram для UIImageView

Я искал медиа-ид и другие варианты, но я не могу найти формат и способ показать это изображение, например:

https://www.instagram.com/p/9W-K0wtq3v/ 
+0

NSURL, NSData и UIImageView. Три слова. – NSNoob

ответ

0

Я думаю: это будет иметь два пути для достижения вашей цели

* Первой : parse link web Instagram. При просмотре источника ссылочной податливости вы найдете прямую ссылку на изображение:

https://igcdn-photos-b-a.akamaihd.net/hphotos-ak-xfp1/t51.2885-15/e35/10729433_781480525295113_239273684_n.jpg 

Таким образом, вы можете анализировать веб-страницу и найти:

<meta property="og:image" content=" 

для прямой связи.

Вы зачислить разработчиков Instagram и научиться использовать Instagram API конечных точек.

3

Вы можете получить прямую ссылку на изображение с помощью http://api.instagram.com/oembed?url=. После этого загрузка изображения с этого URL &, отображающая его в UIImageView, довольно проста. Я отредактировал свой ответ на этот вопрос, поскольку он работает без интеграции API Instagram или анализа веб-страницы для URL-адреса.

Добавьте следующие методы к контроллеру View. Я добавил объяснение в комментарии.

- (void)getDirectURLToLink:(NSString *)urlStr completionBlock:(void (^)(BOOL succeeded, NSString *imageLink))completionBlock 
{ 
    NSURL *url = [NSURL URLWithString:urlStr]; 
    NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url]; 
    [NSURLConnection sendAsynchronousRequest:request 
             queue:[NSOperationQueue mainQueue] 
          completionHandler:^(NSURLResponse *response, NSData *data, NSError *error) { 
           if (!error) 
           { 
            //Convert data to dictionary as it is JSON. You can view json response for your url at http://paste.ubuntu.com/14437288/ 
            NSError *error1; 
            NSMutableDictionary * innerJson = [NSJSONSerialization 
                     JSONObjectWithData:data options:kNilOptions error:&error1 
                     ]; 
            //Send the direct url to block 
            completionBlock(YES,[innerJson objectForKey:@"thumbnail_url"]); 
           } else{ 
            //request failed 
            completionBlock(NO,nil); 
           } 
          }]; 
} 

- (void)downloadImageWithURL:(NSString *)urlStr completionBlock:(void (^)(BOOL succeeded, UIImage *image))completionBlock 
{ 
    NSURL *url = [NSURL URLWithString:urlStr]; 
    NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url]; 
    [NSURLConnection sendAsynchronousRequest:request 
             queue:[NSOperationQueue mainQueue] 
          completionHandler:^(NSURLResponse *response, NSData *data, NSError *error) { 
           if (!error) 
           { 
            //cnvert data to uiimage 
            UIImage *image = [[UIImage alloc] initWithData:data]; 
            completionBlock(YES,image); 
           } else{ 
            //download failed 
            completionBlock(NO,nil); 
           } 
          }]; 
} 

(Но так как sendAsynchronusRequest осуждается в прошивкой 9.0, вы должны использовать [NSURLSession dataTaskWithURL])

Теперь вы создали веб-запрос часть файла. Чтобы использовать эти службы, добавьте следующий метод в ваш Viewcontroller:

-(void) getImageForPostURL: (NSString *)postURL 
{ 
    NSString *baseURL = @"http://api.instagram.com/oembed?url="; 

    NSString *directLinkRequestURL = [NSString stringWithFormat:@"%@%@",baseURL,postURL]; 
    //Request Direct URL to file from your post url 
    [self getDirectURLToLink:directLinkRequestURL completionBlock:^(BOOL succeeded, NSString *imgDirectURL) { 
     if (succeeded) { 
      //Direct link retrieved 
      //Get image 
      [self downloadImageWithURL:imgDirectURL completionBlock:^(BOOL succeeded, UIImage *image) { 
       if (succeeded) { 
        // change the image where you want, it has been downloaded 
        _imgView.image = image; 

       } 

      }]; 

     } 
     else 
     { 
      //Error 
      //Link could not be retrieved 

     } 


    }]; 

} 

Вся эта работа не напрасно. Теперь, вы все готовы пойти. Все, что вам нужно, это URL для Instagram поста, и вы сможете загрузить изображение только по телефону одну строки:

[self getImageForPostURL:@"https://www.instagram.com/p/9W-K0wtq3v/"]; //Give your post url as parameter here 
Смежные вопросы