Bạn có thể làm điều đó mà không cần sử dụng UIDocumentInteractionController và truy cập thẳng vào Instagram bằng 3 phương pháp sau:
Nó hoạt động giống như tất cả các ứng dụng nổi tiếng khác. Mã được viết bằng Objective c, vì vậy bạn có thể dịch nó sang nhanh chóng nếu bạn muốn. Những gì bạn cần làm là lưu hình ảnh của mình vào thiết bị và sử dụng URLScheme
thêm cái này vào bên trong tệp .m của bạn
#import <Photos/Photos.h>
Trước tiên, bạn cần lưu UIImage của mình vào thiết bị bằng phương pháp sau:
-(void)savePostsPhotoBeforeSharing
{
UIImageWriteToSavedPhotosAlbum([UIImage imageNamed:@"image_file_name.jpg"], self, @selector(image:didFinishSavingWithError:contextInfo:), NULL);
}
Phương thức này là lệnh gọi lại để lưu hình ảnh vào thiết bị của bạn:
- (void)image:(UIImage *)image didFinishSavingWithError:(NSError *)error contextInfo: (void *) contextInfo;
{
[self sharePostOnInstagram];
}
Sau khi hình ảnh được lưu vào thiết bị, bạn cần truy vấn hình ảnh bạn vừa lưu và lấy nó làm PHAsset
-(void)sharePostOnInstagram
{
PHFetchOptions *fetchOptions = [PHFetchOptions new];
fetchOptions.sortDescriptors = @[[NSSortDescriptor sortDescriptorWithKey:@"creationDate" ascending:NO],];
__block PHAsset *assetToShare;
PHFetchResult *result = [PHAsset fetchAssetsWithMediaType:PHAssetMediaTypeImage options:fetchOptions];
[result enumerateObjectsUsingBlock:^(PHAsset *asset, NSUInteger idx, BOOL *stop) {
assetToShare = asset;
}];
if([assetToShare isKindOfClass:[PHAsset class]])
{
NSString *localIdentifier = assetToShare.localIdentifier;
NSString *urlString = [NSString stringWithFormat:@"instagram://library?LocalIdentifier=%@",localIdentifier];
NSURL *instagramURL = [NSURL URLWithString:urlString];
if ([[UIApplication sharedApplication] canOpenURL: instagramURL])
{
[[UIApplication sharedApplication] openURL: instagramURL];
} else
{
NSLog(@"No instagram installed");
}
}
}
Và đừng quên đưa cái này vào info.plist của bạn dưới LSApplicationQueriesSchemes
<string>instagram</string>