2011-01-11 14 views
0

iOSアプリを持っているので、ある時点でウェブビューのウェブサイトへのリンクが開きます。これらのリンクはplistファイルに保存されています(アプリが進化するにつれてそれらを維持するのは簡単です)。私が次にやりたいことは、PDFファイル(または、HTML形式のテキストファイル形式の画像、これは柔軟性があります)にリンクして、アプリケーション内に保存することです。そして、私は既存のアプリの構造の中から可能な限りこれをやりたいと思います。それで、plistにWebリンクとして入れることができるリンクを作成することが可能ですが、代わりにデバイス自体のファイルを開くことができます(webviewの可能性もあります)。そして私はそれについてどうやって行くのですか?何か案は?アプリ内pdfへのリンク

あなたの助けを前にThanx!

答えて

0

実行時にリンクを作成する必要があります。私はmylocalfile:filenameのようなローカルURLに特定のプレフィックスを付けることを提案します。次に、plistをロードするコードで、接頭辞を確認し、必要なときにリンクを作成します。これらのリンクを一度作成して別のファイルに保存し、元のファイルではなく読み込むこともできます。

NSArray *links = nil; //I assumed your plist is an array. Change to dictionary if required 
NSString *pathToStoredFile; //Get the path for the file you create with the updated links 
if([[NSFileManager defaultManager] fileExistsAtPath:pathToStoredFile]) { 
    links = [NSArray arrayWithContentsOfFile:pathToStoredFile]; 
} else { 
    NSArray *tmp = [NSArray arrayWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"ListOfLinks" ofType:@"plist"]]; 
    if(!tmp) { 
     //handle error 
    } 
    NSMutableArray *tmpLinks = [[NSMutableArray alloc] initWithCapacity:[tmp count]]; 
    for(NSString *link in tmp) { 
     if([link hasPrefix:@"mylocalfile:"]) { 
      link = [link substringFromIndex:12]; //12 is the length of mylocalfile: 
      NSURL *url = [[NSBundle mainBundle] urlForResource:[link stringByDeletingPathExtension] withExtension:[link pathExtension]]; 
      [tmpLinks addObject:[url absoluteString]]; 
     } else [tmpLinks addObject:link]; 
    } 
    links = [tmpLinks copy]; 
    [tmpLinks release]; 
    [links writeToFile:pathToStoredFile atomically:NO]; 
} 
0

はい、私はUIWebViewに行きます。 iOSは特定のURLハンドラを自動的に処理できる必要があり、アプリは必要に応じてregister to handleの残りの部分を処理できます。

iOSは既に特定のファイルタイプをどのように処理するかを知っています。たとえば、Safari(またはUIWebView)がhttp://somesite.com/afile.pdfに遭遇した場合、どのアプリがそのファイルタイプを処理できるかがわかります。別の例は、電話番号:skype://8005555555です。 iOSはSkypeを開いて番号を渡すことを知っています。 iOSは、iBooksがPDfファイルを処理できることも知っています。

適切なファイルハンドラとタイプのアプリを登録します。その後、ユーザーはリンクをタップ&ホールドして、リンクを処理するための利用可能なアプリのメニューを表示できます。 1つのアプリでのみ使用されるリンクの場合、ユーザーは保持する必要はなく、タップで十分です。

ローカルファイルを指すリンクを作成する限り、C関数NSDocumentsDirectory()を使用してURLハンドラに追加することができます。 (例:http://NSDocumentsDirectory()/filename.pdf

+0

ありがとうございますが、私は実際にそれを取得していません。 UIWebViewによって処理されるリンクを作成して、ローカルのPDFを読み込むことはできますか?どうすればいい?あなたは私にとってスタートポイントや情報源を持っていますか? – Thijs