Bunu UIDocumentInteractionController'ı kullanmadan yapabilir ve aşağıdaki 3 yöntemle doğrudan Instagram'a gidebilirsiniz:
Tıpkı diğer tüm ünlü uygulamaların yaptığı gibi çalışır. Kod, Amaç c'de yazılmıştır, böylece isterseniz onu swift'e çevirebilirsiniz. Yapmanız gereken şey, görüntünüzü cihaza kaydetmek ve bir URLScheme kullanmaktır.
bunu .m dosyanıza ekleyin
#import <Photos/Photos.h>
Öncelikle UIImage'inizi bu yöntemle cihaza kaydetmeniz gerekir:
-(void)savePostsPhotoBeforeSharing
{
UIImageWriteToSavedPhotosAlbum([UIImage imageNamed:@"image_file_name.jpg"], self, @selector(image:didFinishSavingWithError:contextInfo:), NULL);
}
Bu yöntem, görüntüyü cihazınıza kaydetmek için geri aramadır:
- (void)image:(UIImage *)image didFinishSavingWithError:(NSError *)error contextInfo: (void *) contextInfo;
{
[self sharePostOnInstagram];
}
Görüntü cihaza kaydedildikten sonra, yeni kaydettiğiniz görüntüyü sorgulamanız ve PHAset olarak almanız gerekir.
-(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");
}
}
}
Ve bunu info.plist'inize koymayı unutmayın. LSApplicationQueriesSchemes
<string>instagram</string>