คุณสามารถทำได้โดยไม่ต้องใช้ UIDocumentInteractionController และตรงไปที่ Instagram ด้วย 3 วิธีต่อไปนี้:
มันใช้งานได้เหมือนกับแอพชื่อดังอื่น ๆ โค้ดนี้เขียนใน Objective c ดังนั้นคุณสามารถแปลได้อย่างรวดเร็วหากต้องการ สิ่งที่คุณต้องทำคือบันทึกภาพของคุณลงในอุปกรณ์และใช้ URLScheme
เพิ่มสิ่งนี้ในไฟล์. m ของคุณ
#import <Photos/Photos.h>
ก่อนอื่นคุณต้องบันทึก UIImage ลงในอุปกรณ์ด้วยวิธีนี้:
-(void)savePostsPhotoBeforeSharing
{
UIImageWriteToSavedPhotosAlbum([UIImage imageNamed:@"image_file_name.jpg"], self, @selector(image:didFinishSavingWithError:contextInfo:), NULL);
}
วิธีนี้เป็นการโทรกลับเพื่อบันทึกภาพลงในอุปกรณ์ของคุณ:
- (void)image:(UIImage *)image didFinishSavingWithError:(NSError *)error contextInfo: (void *) contextInfo;
{
[self sharePostOnInstagram];
}
หลังจากบันทึกรูปภาพลงในอุปกรณ์แล้วคุณจะต้องค้นหารูปภาพที่คุณเพิ่งบันทึกและรับเป็น 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");
}
}
}
และอย่าลืมใส่ไว้ใน info.plist ด้านล่าง LSApplicationQueriesSchemes
<string>instagram</string>