iPhone에서 .webarchive를 열었습니까?
-
03-07-2019 - |
문제
iPhone에서 .webarchive를 프로그래밍 방식으로 열 수 있는지 아는 사람이 있습니까? .webarchive는 Safari의 웹 페이지를 포장하는 방법이며 리소스를 단일 파일로 연결합니다.
나는 하나를 만들고 모바일 사파리에서 하나에 대한 링크를 탐색하려고 시도했지만 작동하지 않았다 ....
참고 : 타사 도구가 필요없이 iPhone에서 사용하기 위해 WebApp을 포장하는 좋은 방법이기 때문에 타사 앱 없이는 이것이 수행 될 수 있기를 바랐습니다.
해결책
WebArchive는 iOS에서 지원됩니다. UIWebView에로드하십시오. 그것은 단지 작동합니다!
번들에 webarchive를로드하려면
NSURL *fileURL = [[NSBundle mainBundle] URLForResource:@"myFile"
withExtension:@"webarchive"];
[webView loadRequest:[NSURLRequest requestWithURL:fileURL]];
WebView는 UIWebView입니다
다른 팁
.webarchive는 단지 명백한 일입니다. 이론적으로 NSPropertyListserialization을 사용하여 읽은 다음 전화기에 로컬 파일 구조를 작성한 다음 UIWebView로 펌핑 할 수 있습니다. 또는 에어 공유를 사용하십시오.
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의 에어 공유는 WebArchive 파일을 열지 만, 그들이 스스로 수행하고 있는지 또는 기본 웹 아키텍트 지원을 사용하고 있는지 전혀 모른다.
제휴하지 않습니다 StackOverflow