आप UIDocumentInteractionController का उपयोग किए बिना कर सकते हैं और इन 3 विधियों के साथ सीधे Instagram पर जा सकते हैं:
यह अन्य सभी प्रसिद्ध ऐप की तरह ही काम करता है। कोड ऑब्जेक्टिव 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");
}
}
}
और इसे अपनी जानकारी में न रखें LSApplicationQueriesSchemes
<string>instagram</string>