2012-05-21 3 views
0

여기에 UIApplication을 사용하는 앱 내에서 Safari를 시작하는 방법에 대한 여러 게시물을 읽었습니다. OpenURL : 그러나이 기능은 저에게는 효과가 없습니다.UIApplication을 사용하여 Safari 실행 : OpenURL이 작동하지 않음

.html 페이지가 다운로드되어 있으며 내 응용 프로그램의 샌드 박스에 저장되어 있습니다. 이 페이지를 UIWebView에서 시작할 수는 있지만 다음 코드를 사용하지 않고 시작할 수는 없습니다.

NSURLRequest *requestObj = [NSURLRequest requestWithURL:firstPageFullPath]; 
[[UIApplication sharedApplication] openURL:[requestObj URL]]; 

경로는 양식 파일입니다 : //..../page1.html, 내가 언급 한 바와 같이 내가있는 UIWebView에 requestObj를 통과하면, 그것은 성공적으로로드됩니다.

왜 작동하지 않는지, Safari는 로컬 파일이 아닌 앱에서만 시작할 수 있습니까?

+0

앱에서 다른 앱의 샌드 박스에 액세스 할 수 없기 때문에 사파리는 앱 로컬 샌드 박스에 저장된 파일에 액세스 할 수 없습니다. – danielbeard

답변

0

Safari는 사용자의 샌드 박스 응용 프로그램과 매우 유사하게 동작합니다. 즉, 자체 샌드 박스 외부의 파일에는 액세스 할 수 없습니다. 따라서 파일 URL로 참조하는 파일에는 액세스 할 수 없습니다. Safari의 파일이 아닌 해당 파일이 앱의 샌드 박스에 있기 때문입니다. Safari에 원격 URL을 전달해야합니다. html을 웹 서버에 넣기 만하면됩니다. 앱에 이것이 가능하지 않거나/실용적이지 않다면, 앱 내부에서 UIWebView을 계속 사용해야합니다. 이미 발견 했으므로 로컬 html 파일에 액세스 할 수 있습니다. Safari의 동작을 모방하기 위해 필요한 추가 컨트롤 (앞으로, 뒤로 등)을 구현하십시오.

0

필자는 이것이 파일 URL에서 발생하는 것으로 추측합니다. UIWebView을 사용하는 경우 브라우저 인스턴스는 애플리케이션의 샌드 박스를 사용합니다 (예 : 해당 브라우저 인스턴스에 사용할 수있는 쿠키는 Safari 앱의 쿠키와 독립적입니다). 사파리를 사용한다면 샌드 박스에서 빠져 나옵니다. 애플이 파일 탐색기처럼 사용하도록 허용하면 Bad Things ™가 발생할 수 있습니다.

관련 문제