0

写真をInstagramに投稿するための次のコードがあります。

NSArray *paths = NSSearchPathForDirectoriesInDomains( NSDocumentDirectory, NSUserDomainMask, YES);
    NSString* homePath = [paths objectAtIndex:0];
    NSString* basePath = @"integration/instagram";
    NSString* tmpFileName = @"jumpto.ig";

    NSString* dirPath = [NSString stringWithFormat:@"%@/%@", homePath, basePath];
    NSString* docPath = [NSString stringWithFormat:@"%@/%@", dirPath, tmpFileName];

    //clear it out and make it fresh
    [[NSFileManager defaultManager] removeItemAtPath:docPath error:nil];
    if ([[NSFileManager defaultManager] createDirectoryAtPath:dirPath withIntermediateDirectories:YES attributes:nil error:nil]) {

        NSData* imgData = [self generateImageData:img];
        [[NSFileManager defaultManager] createFileAtPath:docPath contents:imgData attributes:nil];
        NSURL* url = [NSURL fileURLWithPath:docPath isDirectory:NO ];

        NSURL *instagramURL = [NSURL URLWithString:@"instagram://camera"];
        if ([[UIApplication sharedApplication] canOpenURL:instagramURL]) {
            //imageToUpload is a file path with .ig file extension
            self.documentInteractionController = [UIDocumentInteractionController interactionControllerWithURL:url];
            self.documentInteractionController.UTI = @"com.instagram.exclusivegram";
            self.documentInteractionController.delegate = self;
            self.documentInteractionController.annotation = [NSDictionary dictionaryWithObject:@"Caption Test" forKey:@"InstagramCaption"];
            [self.documentInteractionController presentOptionsMenuFromBarButtonItem:self.navigationItem.rightBarButtonItem animated:YES];
        }
    }

問題は、ポップオーバーを開くと、facebook / twitter / mail / print / Assign to contact / copy/etcなどの他のサービスが表示されることです。Instagramで開くオプションが1つしかないようにするにはどうすればよいですか?

4

1 に答える 1

2

.igoInstagramは、.jpg / .igファイルと(Instagramのみ)と呼ばれる特別な拡張子の両方をリッスンします。ファイル名を.igoに変更すると、Instagramのみがリストに表示されます。

NSString* tmpFileName = @"jumpto.igo";

出典:Instagram iPhone Hooks

編集:ファイルの書き方に論理的な問題があると思います。NSFileManagerを使用してこの行の内容を書き出す代わりに、次のようにします。

[[NSFileManager defaultManager] createFileAtPath:docPath contents:imgData attributes:nil];

NSDataオブジェクト自体を使用して、適切な場所に書き込んでみてください。

[imgData writeToFile:docPath atomically:NO];

これによって別のファイルが作成されるかどうかはわかりませんが、データを使用してファイルを作成する方法が、データを直接書き込むNSFileManager方法とは異なるのではないかと思います。NSData

于 2013-02-10T17:52:07.430 に答える