iPhoneで.webarchiveを開きますか?
-
03-07-2019 - |
質問
iPhoneで.webarchiveをプログラムで開くことができるかどうかを知っている人はいますか? .webarchiveは、Webページをパッケージ化するSafariの方法であり、リソースを単一のファイルに関連付けます。
モバイルサファリで作成してリンクを参照しようとしましたが、機能しませんでした。
注:サードパーティ製のアプリを使用せずにこれを実行できることを望んでいました。サードパーティ製のツールを必要とせずに、iPhoneで使用するWebAppをパッケージ化する良い方法だからです。
解決
webarchiveはiOSでサポートされています。 UIWebViewにロードするだけです。うまくいく!
バンドルにウェブアーカイブを読み込むには、ただ
NSURL *fileURL = [[NSBundle mainBundle] URLForResource:@"myFile"
withExtension:@"webarchive"];
[webView loadRequest:[NSURLRequest requestWithURL:fileURL]];
webviewはUIWebviewです
他のヒント
.webarchiveは単なるplistです。理論的には、NSPropertyListSerializationを使用してそれを読み取り、電話でローカルファイル構造を構築し、それをUIWebViewにポンプすることができます。または、AirSharingを使用します。
上記の提案について少し詳しく説明しますが、単にHTMLを取得したい場合は、次のコードスニペットが出発点として適しています。 webMainResourceディクショナリを調べると、画像などの他の素材も抽出できます。
#define WEB_ARCHIVE @"Apple Web Archive pasteboard type"
- (NSString*) htmlStringFromPasteboard;
{
NSData* archiveData = [[UIPasteboard generalPasteboard] valueForPasteboardType:WEB_ARCHIVE];
if (archiveData)
{
NSError* error = nil;
id webArchive = [NSPropertyListSerialization propertyListWithData:archiveData options:NSPropertyListImmutable format:NULL error:&error];
if (error)
{
return [NSString stringWithFormat:@"Error: '%@'", [error localizedDescription]];
}
NSDictionary* webMainResource = [webArchive objectForKey:@"WebMainResource"];
NSData * webResourceData = [webMainResource objectForKey:@"WebResourceData"];
NSString* string = [[NSString alloc] initWithData:webResourceData encoding:NSUTF8StringEncoding];
return [string autorelease];
}
return @"No WebArchive data on the pasteboard just now";
}
iPhoneのAirSharingはWebアーカイブファイルを開きますが、それらがすべて自分で行っているのか、ネイティブのWebアーカイブサポートを使用しているのかわかりません。
を参照所属していません StackOverflow