8

私はすべてを再確認し、誰かが私が見ていない愚かな間違いを見つけることができることを望んでいます。

アプリケーションのAppleヘルプセクションを作成しようとしていますが、ランディングページに正しく移動しますが、どのアンカーも機能しません。ディレクトリにあるランディングページが呼び出されindex.html、他のページが呼び出されます。 test.htmlpgs

index.htmlには次のものがあります。

<a href="help:anchor=support bookID=com.company.app_name.help">Link to another page</a>

test.htmlには次のものがあります。

<a name="support"></a>

それで、私が今いる場所にたどり着くために私が従ったステップはここにあります:

1)Appleのドキュメントで指定されているようにディレクトリを作成しました

AppName.help/
    Contents/
        Info.plist
        Resources/
            shrd/
            English.lproj/
                index.html
                search.helpindex
                pgs/
                    test.html

2)Appleのドキュメントで指定されているようにHelpInfo.plistを作成しました。Info.plistに含まれています。に設定しCFBundleIdentifierましたcom.company.app_name.help

3)アプリのInfo.plistで、に設定し、CFBundleHelpBookFolderAppName.help設定CFBundleHelpBookNameしますcom.company.app_name.help

4)次に、追加したフォルダの[フォルダ参照の作成]オプションを選択したことを確認しながら、Xcodeに組み込んだディレクトリをコピーしました。

5)次に、ヘルプインデクサーを使用してディレクトリにインデックスを付けましたAppName.helpすべてのファイルのアンカー情報にインデックスを付けるオプションを選択していることを確認します。次に、.helpindexファイルを本来あるべきEnglish.lprojフォルダーにコピーしました。

それでおしまい。index.htmlファイルに次のリンクを配置すると、アプリケーションについて気付いたことがいくつかあります。これは正しく機能します。

<a href="pgs/test.html">Click this link</a>                 

また、 index.htmlの私のコードは次のとおりです。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"><html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title>AppName Help</title>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <meta name="robots" content="noindex" />
    <meta name="AppleTitle" content="AppName Help" />
    <meta name="AppleIcon" content="../shrd/icon.png" />
</head>
<body>
    <a href="help:anchor=support bookID=com.company.app_name.help">Link to another page</a>
</body>

test.htmlのコードは次のとおりです。

<?xml version="1.0" encoding="utf-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <title>Testing Links</title>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        <meta name="robots" content="anchors" />
    </head>
    <body>
        <a name="support"></a>Does linking work?<br/>

    </body>
</html>

これが私のヘルプファイルのInfo.plistです。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>CFBundleDevelopmentRegion</key>
    <string>en_us</string>
    <key>CFBundleIdentifier</key>
    <string>com.company.app_name.help</string>
    <key>CFBundleInfoDictionaryVersion</key>
    <string>6.0</string>
    <key>CFBundleName</key>
    <string>AppName</string>
    <key>CFBundlePackageType</key>
    <string>BNDL</string>
    <key>CFBundleShortVersionString</key>
    <string>2</string>
    <key>CFBundleSignature</key>
    <string>hbwr</string>
    <key>CFBundleVersion</key>
    <string>2</string>
    <key>CFBundleHelpBookName</key>
    <string>AppName Help</string>
    <key>HPDBookAccessPath</key>
    <string>index.html</string>
    <key>HPDBookIconPath</key>
    <string>shrd/icon.png</string>
    <key>HPDBookIndexPath</key>
    <string>search.helpindex</string>
    <key>HPDBookKBProduct</key>
    <string>app_name1</string>
    <key>HPDBookKBURL</key>
    <string>http://www.company.com</string>
    <key>HPDBookRemoteURL</key>
    <string>http://www.company.com</string>
    <key>HPDBookTitle</key>
    <string>AppName Help</string>
    <key>HPDBookType</key>
    <string>3</string>
</dict>
</plist>

また、私はこの投稿に従いました:http: //www.cocoabuilder.com/archive/cocoa/312037-updating-an-app-help.htmlディレクトリのインデックスの再作成に加えて、変更を加えるたびにキャッシュをクリアします。

皆さんありがとう!

4

2 に答える 2

5

確かにデビッド、リマインダーをありがとう。

私が思い出したものと私のずさんなドキュメントから、次のコマンドを実行してヘルプドキュメントファイルにインデックスを付けます。

hiutil -vCaf ./search.helpindex English.lproj

しかし、私が気付いたのは、インデックスユーティリティは&nbsp;文字が使用されるたびに文句を言うことです。代わりに文字を置き換えます&#32;

それが私の場合のバグだったと思います。

于 2013-09-10T21:46:38.217 に答える
1

すべてが適切であり、それでもヘルプが機能しない場合は、以下のコードを使用してください。セキュリティ上の懸念についてはよくわかりません。アプリからファイルを削除する方法を検討する必要があるかもしれません。アップグレード中のアプリがヘルプファイルを更新せず、新しいアンカーを含まない古いヘルプファイルのキャッシュされたコピーを表示しない場合があります。したがって、以下のコードはヘルプキャッシュをクリアします。また、アプリの情報plistではなくヘルプバンドル内にあるInfo.plistのヘルプファイルのビルドバージョンをインクリメントする、よりクリーンな方法もあります。これらのフィールドはCFBundleShortVersionStringCFBundleVersionです。

-(void)clearCacheHelp {
NSArray *arguments1 = [NSArray arrayWithObjects:@"helpd",nil];

NSTask * list1 = [[NSTask alloc] init];
[list1 setLaunchPath:@"/usr/bin/killall"];
[list1 setArguments:arguments1];


NSPipe * out1 = [NSPipe pipe];
[list1 setStandardOutput:out1];

[list1 launch];
[list1 waitUntilExit];


NSString *home = [self homeDirectory];

home = [home stringByAppendingPathComponent:@"Library/Caches/com.apple.helpd"];

NSArray *arguments  = [NSArray arrayWithObjects:@"-rf",home,nil];


NSTask * list = [[NSTask alloc] init];
[list setLaunchPath:@"/bin/rm"];
[list setArguments:arguments];


NSPipe * out = [NSPipe pipe];
[list setStandardOutput:out];

[list launch];
[list waitUntilExit];



NSString *home2 = [self homeDirectory];

home2 = [home2 stringByAppendingPathComponent:@"Library/Caches/com.apple.helpviewer"];

NSArray *arguments2  = [NSArray arrayWithObjects:@"-rf",home2,nil];


NSTask * list2 = [[NSTask alloc] init];
[list2 setLaunchPath:@"/bin/rm"];
[list2 setArguments:arguments2];


NSPipe * out2 = [NSPipe pipe];
[list2 setStandardOutput:out2];

[list2 launch];
[list2 waitUntilExit];


NSArray *arguments3  = [NSArray arrayWithObjects:@"-rf",@"~/Library/Caches/com.apple.helpd",nil];


NSTask * list3 = [[NSTask alloc] init];
[list3 setLaunchPath:@"/bin/rm"];
[list3 setArguments:arguments3];


NSPipe * out3 = [NSPipe pipe];
[list3 setStandardOutput:out3];

[list3 launch];
[list3 waitUntilExit];


NSArray *arguments4  = [NSArray arrayWithObjects:@"-rf",@"~/Library/Caches/com.apple.helpviewer",nil];


NSTask * list4 = [[NSTask alloc] init];
[list4 setLaunchPath:@"/bin/rm"];
[list4 setArguments:arguments4];


NSPipe * out4 = [NSPipe pipe];
[list4 setStandardOutput:out4];

[list4 launch];
[list4 waitUntilExit];


}
于 2015-09-04T14:07:43.313 に答える