2014-09-19 8 views
3

PhoneGapapplication을 개발 중이며 사용자가 서버에서 제공하는 일부 페이지를 탐색 할 수 있습니다. 사용자가 해당 페이지로 이동하면 앱에서 모든 파일 (HTML, CSS, JS 등)을 다운로드하여 iPad에 저장합니다. 이렇게하면 사용자가 offline 인 페이지에 액세스하려고하면 로컬 파일이 제공됩니다.PhoneGap 및 iOS 8 : 내 앱을 업데이트 한 후에 만 ​​로컬 파일을로드하지 못했습니다.

이 응용 프로그램은 내 iPad 8 iOS에 업데이트하기로 결정 iOS 7. 어제에 괜찮 았는데, 처음에는 일 듯 : 나는 파일을 다운로드 로컬 파일을 사용하여 페이지를 탐색 여전히 오프라인 수 있습니다. 나는 Console에서 얻고있는 유일한 오류는 다음과 같습니다

[Error] Deprecated attempt to access property 'userAgent' on a non-Navigator object. 

문제는 내 응용 프로그램을 업데이트하거나 사용할 때 설치 한 앱 "지역 실행 IOS를 폰갭"제공됩니다. 나는 File 플러그인을 사용하여 읽을 수

Failed to load resource: The requested URL was not found on this server. 
file:///var/mobile/Containers/Data/Application/7A3590E8-C78A-4F45-B5B9-51FD0BAFE524/Library/files/pages/7/7a56ab3cfa56fbd1b9c4becbf5dca4a2.jpg 

파일이 존재하지만, 웹보기 그들을로드 할 수 없습니다 : 나는 그것을 할 때마다 앱이 로컬 파일을로드 할 수 없게된다.

<img src="file://localhost/var/mobile/Containers/Data/Application/7A3590E8-C78A-4F45-B5B9-51FD0BAFE524/Library/files/pages/7/7a56ab3cfa56fbd1b9c4becbf5dca4a2.jpg" > 

내가 iosPersistentFileLocation 등 모두 LibraryCompatibility를 사용하려고했지만 결과는 동일 :이처럼를 참조하고 있습니다. 나는이가 iOS 8 로컬 파일을로드 할 알려진 버그로 인해 발생라고 생각 처음에는

fileEntry.setMetadata(function(){}, function(){}, {"com.apple.MobileBackup": 1}); 

:하지만, 나는 iCloud에로이를 방지하기 위해 "백업되지는 않는다"포함 된 모든 다운로드 파일을 표시하고 있습니다 내 앱이 그들을 로딩하는 중이며, 앱을 업데이트 한 후 작동을 멈춘다.

나는 PhoneGap이고 모든 것은 plugins이며 마지막 버전으로 업데이트되었습니다. 나는 또한 Cordova을 사용해 보았는데 같은 일이 일어난다.

아무도 내가 이것을 어떻게 해결할 수 있는지 또는이 버그를 어디에서보고해야합니까?

감사합니다.

+0

아직 보지 않았다면 알려진 문제입니다. http://www.techrepublic.com/article/why-ios-8-could-break-your-hybrid-mobile-app/ – Brandon

+0

나는 그 문제를 읽고, 나는 PhoneGap이 이것 때문에 오래된 WebView를 사용하고 있다고 생각합니다. 내 응용 프로그램은 로컬 파일을로드 할 수 있으며, 응용 프로그램을 업데이트하면 문제가 발생하고 다시 다운로드 할 때까지로드 할 수 없게됩니다. –

답변

2

나는 그것을 해결할 수있었습니다. 내 HTML에서 사용할 파일 URL을 얻기 위해 fileEntry.toURL을 사용하고있었습니다. 사용하는 경우

fileEntry.toInternalURL() 

대신 사용하면 정상적으로 작동합니다.

내부 URL로 URL이 다음과 같이 있습니다 : 저도 같은 문제로 실행하고 나는 그것을 해결하기 위해 관리

cdvfile://localhost/persistent/pages/7/0b0cc746c5e90ee7fc94b2c15d37d43e.png 
0

. 내 경우, 내 문제는 내가 애플 리케이션을 업데이트 할 때마다, 새로운 애플 리케이션은 다른 아이디가 마지막 것입니다.예를 들어, 기존의 응용 프로그램에 대한 경로이었다 :

file:///var/mobile/Containers/Data/Application/7A3590E8-C78A-4F45-B5B9-51FD0BAFE524/Library/files/file.pdf 

그리고 새로운 하나를 내 PDF 파일, 나는 잘못된 경로부터 사용하던 응용 프로그램 데이터 저장에 여전히 있었다

file:///var/mobile/Containers/Data/Application/1BC5FS-7B3B-90E8-C7C8-1B7C1984C2A71/Library/files/file.pdf 

그래서 비록

앱에서 새 애플리케이션 ID를 만들었습니다. 나는 업데이트가있을 때마다 내 경로를 업데이트하는 새로운 함수를 만들어서이 문제를 해결했다.

window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, onFileSystemSuccess, fail); 

function onFileSystemSuccess(fileSystem) { 
    //Do what you need here 
    } 

파일 시스템은 루트 내에 nativeURL을 포함하는 개체입니다.

희망이 있습니다.