1

iPhone に移植している Android アプリがあり、重要な機能では、ユーザーがダウンロードした単純なテキスト ファイルを開く必要があります。Android では、ユーザーがメールの添付ファイルとしてファイルを取得するのが通常の方法ですが、ユーザーがファイルを iPhone にダウンロードしてアプリで開くことができる方法であれば、どのような方法でも機能します。iPhoneでこれを行う方法はありますか?

4

1 に答える 1

0

テキスト ファイルをどのように処理しているかはよくわかりませんが、ユーザーがアプリのメール アプリから添付ファイルを開くことを選択したときに、次の方法で添付メールからテキスト ファイルを取得できます。

最初に、テキスト ファイルを開くことができるようにアプリを登録する必要があります。これを行うには、アプリのinfo.plistファイルに移動し、次のセクションを追加します。

<key>CFBundleDocumentTypes</key>
  <array>
      <dict>
        <key>CFBundleTypeName</key>
        <string>Text Document</string>
        <key>CFBundleTypeRole</key>
        <string>Viewer</string>
        <key>LSHandlerRank</key>
        <string>Alternate</string>
        <key>LSItemContentTypes</key>
        <array>
            <string>public.text</string>
        </array>
    </dict>
</array>

これにより、アプリがテキスト ファイルを開くことができることが iOS に通知されます。これで、"Open In..." というボタンがあり (Safari やメールなど)、ユーザーがテキスト ファイルを開きたい場合、アプリがリストに表示されます。

AppDelegate でテキスト ファイルを開く処理も行う必要があります。

-(BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation
{    
if (url != nil && [url isFileURL]) {
    //Removes the un-needed part of the file path so that only the File Name is left
    NSString *newString = [[url absoluteString] substringWithRange:NSMakeRange(96, [[url absoluteString] length]-96)];
    //Send the FileName to the USer Defaults so your app can get the file name later
    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
    [defaults setObject:newString forKey:@"fileURLFromApp"];
    //Save the Defaults
    [[NSUserDefaults standardUserDefaults] synchronize];
    //Post a Notification so your app knows what method to fire
    [[NSNotificationCenter defaultCenter] postNotificationName:@"fileURLFromApp" object:nil];
} else {
}
return YES;
}

ViewController.m でその通知を登録する必要があります。

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(fileURLFromApp) name:@"fileURLFromApp" object:nil];

次に、必要なメソッドを作成してファイルを取得できます。

- (void) fileURLFromApp
{   
//Get stored File Path
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
NSString *filePath = [defaults objectForKey:@"fileURLFromApp"];
NSString *finalFilePath = [documentsDirectory stringByAppendingPathComponent:filePath];
//Parse the data
//Remove "%20" from filePath
NSString *strippedContent = [finalFilePath stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
//Get the data from the file
NSString* content = [NSString stringWithContentsOfFile:strippedContent encoding:NSUTF8StringEncoding error:NULL];

上記のメソッドは、呼び出された NSString 内のテキスト ファイルの内容を提供します。content

そして、それはうまくいくはずです!頑張ってください!

于 2012-08-11T23:06:58.590 に答える