目前最好的解决方案:
https://stackoverflow.com/a/21888830/1786820
我想通过使用PhotoRoll中的预选视频文件打开Instagram应用程序以及预加载的标题来做得更好。在Flipagram应用程序中,他们就是这样做的。当您点击视频的分享时,他们会保存您的相机胶卷,建议一个标题,然后直接进入Instagram应用照片选择屏幕,并预先选择视频。即使视频不是PhotoRoll中的最新媒体,它也会正确地突出显示正确的视频,以及Flipagram应用程序中准备的标题。
这可能是未记录的iPhone钩子吗?
感谢任何帮助。
答案 0 :(得分:12)
我想出了让我的应用程序接受instagram:// URL架构的想法。来自Flipagram的钩子在我的应用程序中打开如下:
的Instagram://库AssetPath =资产库%3A%2F%2Fasset%2Fasset.mp4%3Fid%3D8864C466-A45C-4C48-B76F-E3C421711E9D%26ext%3Dmp4&安培; InstagramCaption =有些%20Preloaded%20Caption
未记录的iPhone挂钩,允许您从iPhone照片卷中自动选择资源,并预加载视频的标题。这应该为您提供Flipagrams应用程序与Instagram共享视频时的相同用户体验。
NSURL *videoFilePath = ...; // Your local path to the video
NSString *caption = @"Some Preloaded Caption";
ALAssetsLibrary *library = [[ALAssetsLibrary alloc] init];
[library writeVideoAtPathToSavedPhotosAlbum:[NSURL URLWithString:videoFilePath] completionBlock:^(NSURL *assetURL, NSError *error) {
NSURL *instagramURL = [NSURL URLWithString:[NSString stringWithFormat:@"instagram://library?AssetPath=%@&InstagramCaption=%@",[assetURL absoluteString].percentEscape,caption.percentEscape]];
if ([[UIApplication sharedApplication] canOpenURL:instagramURL]) {
[[UIApplication sharedApplication] openURL:instagramURL];
}
}];
效果很好!
更新的 Instagram已经删除了将标题传递给他们的应用程序的功能。现在最好的解决方案就是将所需的标题复制到粘贴板上。
答案 1 :(得分:0)
答案是它根本不是从相机胶卷拉视频,它可能看起来就像是。
此处的文档:http://instagram.com/developer/mobile-sharing/iphone-hooks/
相关位是“文档交互”的底部。
你可以通过这样做来做到这一点:
NSString *filePath = [NSTemporaryDirectory() stringByAppendingPathComponent:@"instagram.igo"];
NSData *data = // set this yourself
NSError *error = nil;
if (! [data writeToFile:filePath options:NSDataWritingAtomic error:&error])
{
// error here
}
self.documentInteractionController = [UIDocumentInteractionController interactionControllerWithURL:[NSURL fileURLWithPath:filePath]];
self.documentInteractionController.delegate = self;
self.documentInteractionController.UTI = @"com.instagram.exclusivegram";
self.documentInteractionController.annotation = @{ @"InstagramCaption" : @"caption text here" };
const BOOL couldOpen = [self.documentInteractionController presentOpenInMenuFromRect:CGRectZero inView:myView animated:YES];
设置自己出现的数据,标题和视图。请注意,UIDocumentInteractionController
也是一个属性。它应该保留在某个地方而不仅仅是方法中的局部变量,因为当方法完成时它需要存在于该范围之外。