Могу ли я показать фотографию instagram на моем UIImageView?Фотографии Instagram для UIImageView
Я искал медиа-ид и другие варианты, но я не могу найти формат и способ показать это изображение, например:
https://www.instagram.com/p/9W-K0wtq3v/
Могу ли я показать фотографию instagram на моем UIImageView?Фотографии Instagram для UIImageView
Я искал медиа-ид и другие варианты, но я не могу найти формат и способ показать это изображение, например:
https://www.instagram.com/p/9W-K0wtq3v/
Я думаю: это будет иметь два пути для достижения вашей цели
* Первой : 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 конечных точек.
Вы можете получить прямую ссылку на изображение с помощью 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
NSURL, NSData и UIImageView. Три слова. – NSNoob