我在iOS应用程序中使用以下代码来使用Instagram iPhone挂钩将照片发布到Instagram。我只希望“Open In ...”菜单中有Instagram应用程序,没有其他应用程序。但在我的情况下,Camera +也出现了。我怎么能限制在Instagram上?
另外,我可以直接打开Instagram而不是显示Open In菜单吗?
NSURL *instagramURL = [NSURL URLWithString:@"instagram://app"];
if ([[UIApplication sharedApplication] canOpenURL:instagramURL]) {
//imageToUpload is a file path with .ig file extension
self.documentInteractionController = [UIDocumentInteractionController interactionControllerWithURL:[NSURL fileURLWithPath:imageToUpload]];
self.documentInteractionController.UTI = @"com.instagram.photo";
self.documentInteractionController.annotation = [NSDictionary dictionaryWithObject:@"my caption" forKey:@"InstagramCaption"];
[self.documentInteractionController presentOpenInMenuFromBarButtonItem:self.exportBarButtonItem animated:YES];
}
答案 0 :(得分:12)
BTW Instagram为此添加了一个独占文件扩展名(ig)和UTI(com.instagram.exclusivegram)。它仍然打开Open with ...菜单,但唯一的选择是Instagram。
此处有更多信息:https://instagram.com/developer/mobile-sharing/iphone-hooks/
答案 1 :(得分:8)
您可以从此link获得解决方案。
使用.igo
扩展名而不是.ig
保存图片。这是文件类型的“独占”版本。
创建UIDocumentInteractionController
,然后将值com.instagram.exclusivegram
分配给属性UTI
。
使用UIDocumentInteractionController
。
presentOpenInMenuFromRect:inView:animated
醇>
答案 2 :(得分:4)
这对我有用,就这样做,你将只有Instagram作为打开你的形象的独家应用程序。
NSString *documentDirectory = [NSHomeDirectory() stringByAppendingPathComponent:@"Documents"];
// *.igo is exclusive to instagram
NSString *saveImagePath = [documentDirectory stringByAppendingPathComponent:@"Image.igo"];
NSData *imageData = UIImagePNGRepresentation(filteredImage);
[imageData writeToFile:saveImagePath atomically:YES];
NSURL *imageURL=[NSURL fileURLWithPath:saveImagePath];
_docController=[[UIDocumentInteractionController alloc]init];
_docController.delegate=self;
_docController.UTI=@"com.instagram.photo";
[_docController setURL:imageURL];
_docController.annotation=[NSDictionary dictionaryWithObjectsAndKeys:@"#yourHashTagGoesHere",@"InstagramCaption", nil];
[_docController presentOpenInMenuFromRect:CGRectZero inView:self.view animated:YES];
答案 3 :(得分:0)
仅回答您的第一个问题:您可能可以将“打开...”菜单限制为仅为您的设备显示Instagram(例如,删除相机+应用程序),但您不会能够限制将您的应用安装到其设备的用户。这是因为iPhone识别哪些应用程序能够打开特定类型的文件,并自动显示每个文件。
答案 4 :(得分:0)
self.documentInteractionController = [self setupControllerWithURL:imgurl usingDelegate:self];
self.documentInteractionController=[UIDocumentInteractionController interactionControllerWithURL:imgurl];
self.documentInteractionController.UTI = @"com.instagram.exclusivegram";
以相同的顺序使用此代码。 这里documentInteractionController是UIDocumentInteractionController.just的对象,供您参考。 你只能在“打开”窗口中获得Instagram。