Anda dapat melakukannya tanpa menggunakan UIDocumentInteractionController dan langsung membuka Instagram dengan 3 metode berikut:
Ini berfungsi seperti semua aplikasi terkenal lainnya. Kode tersebut ditulis di Objective c, jadi Anda bisa menerjemahkannya ke swift jika Anda mau. Yang perlu Anda lakukan adalah menyimpan gambar Anda ke perangkat dan menggunakan URLScheme
tambahkan ini di dalam file .m Anda
#import <Photos/Photos.h>
Pertama, Anda perlu menyimpan UIImage Anda ke perangkat dengan metode ini:
-(void)savePostsPhotoBeforeSharing
{
UIImageWriteToSavedPhotosAlbum([UIImage imageNamed:@"image_file_name.jpg"], self, @selector(image:didFinishSavingWithError:contextInfo:), NULL);
}
Metode ini adalah panggilan balik untuk menyimpan gambar ke perangkat Anda:
- (void)image:(UIImage *)image didFinishSavingWithError:(NSError *)error contextInfo: (void *) contextInfo;
{
[self sharePostOnInstagram];
}
Setelah gambar disimpan ke perangkat, Anda perlu menanyakan gambar yang baru saja Anda simpan dan mendapatkannya sebagai 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");
}
}
}
Dan jangan lupa untuk memasukkan ini ke info.plist Anda di bawah LSApplicationQueriesSchemes
<string>instagram</string>