Cordova 프로젝트를 진행하면서 앱 내부에 파일을 저장하고 거기에 계속 접근해야하는데
안드로이드는 문제가 없으나
iOS에서 업데이트를 하면 데이터를 다시받아야한다는 문제가 생겼다.
분석해본다
- 앱을 설치한다.
- 파일을 다운로드한다.
- 파일의 경로를 본다.
반복
1. file:///var/mobile/Containers/Data/Application/DC10658C-BB87-43C1-B6D0-C95731C956BA/Documents/NoCloud/dir/data
2. file:///var/mobile/Containers/Data/Application/70B35BEC-7077-4B23-BFE2-5F5A60E3A8AB/Documents/NoCloud/dir/data
3. file:///var/mobile/Containers/Data/Application/4CFE8D38-3810-4B16-B4D8-6F3D5F7AB687/Documents/NoCloud/dir/data
이렇게 나왔는데 앱의 UUID가 다 다르다.
DC10658C-BB87-43C1-B6D0-C95731C956BA
70B35BEC-7077-4B23-BFE2-5F5A60E3A8AB
4CFE8D38-3810-4B16-B4D8-6F3D5F7AB687
이렇게 3개가 다 각각 다르다현재 테스트는 디바이스에 debug 모드로 앱을 올리고 있는데
현재 명령어인$cordova run ios --release --device
실패.
The following build commands failed:Ld build/app.build/Release-iphoneos/app.build/Objects-normal/armv7s/app normal armv7s
위와 같은 에러가 났는데 7.0 버전으로 타겟을 너무 낮게 잡아서 그런거라고 경고가 뜨길래
버전을 8.3으로 올려줘봤다.
config.xml에<preference name="deployment-target" value="8.3" />를 추가하고 진행하였으나 실패 (에러남).
그냥 xcode로 릴리즈 모드로 실행해보았다.일단 실행은 잘됨.
아까 했던 그 반복을 다시 해본다.
1. file:///var/mobile/Containers/Data/Application/C089CB02-C0ED-4E98-87EF-63BEE176BE21/Documents/NoCloud/dir/data
2. file:///var/mobile/Containers/Data/Application/392D7B12-05F3-4B3C-AD2E-2D98C3B59DBB/Documents/NoCloud/dir/data
또 달라진다...
C089CB02-C0ED-4E98-87EF-63BEE176BE21392D7B12-05F3-4B3C-AD2E-2D98C3B59DBB
일단 UUID의 뜻을 보면
Universally Unique Identifier 라고 하는 것인데시간,
공간의 값을 섞어서 만든 128bit 겹치지 않는 유니크한 수라고 한다.
난 유니크보다 바뀌지 않았으면 했는데 왜 자꾸 바뀌는 것인가봤더니http://stackoverflow.com/questions/29219172/android-cordova-uuid-reliability
위의 글에 따르면 iOS의 경우 안정성있는 값이 아니라고 한다. 부들부들
혹시나 해서 다시 해봤는데
이 상황에도 다시 바뀜
file:///var/mobile/Containers/Data/Application/5FEEE71E-8858-4CD3-A6BD-08FF2FF16EFD/Documents/NoCloud/dir/data
혹시나 해서 device plugin에 있는 uuid를 봤는데
1. device.uuid = 6536A21C-375B-4F12-8D6B-05A2EC8025392.
2. device.uuid = 6536A21C-375B-4F12-8D6B-05A2EC802539
안변한다.앱 내부에서의 uuid는 안변하는데app의 uuid는 변한다...
어떻게 해야할지 답이 안나온다.
실제로 앱을 업데이트 했는데 데이터가 날아가는 경우가 있는지 알아봐야겠다.
========================================================
파일을 확인해볼수 있는 함수인
resolveLocalFileSystemURL(path , function (entry) {console.log(entry);});
로 확인해봤더니
파일은 있었더랬다...
바뀌는 앱의 UUID까지 저장한 경로를 불러오면 안된다는 소리라서
파일 경로 저장을 dir/data로 저장하고
데이터를 불러올때는 cordova.file.documentsDirectory + "NoCloud/dir/" + dataname으로 불러왔더니
성공!
피드 구독하기:
글 (Atom)
JIRA Plugin - ScriptRunner 소개 #2
관련 글 소개 #1: https://pineoc.blogspot.com/2019/03/scriptrunner-1.html ScriptRunner 소개 #2 지난 글에서는 Behaviours를 보았고 다음 내용인 콘솔, 리스너 등을 ...
-
에반젤리스트(Evangelist)란 무엇일까요? 단어 그대로 말한다면 '전도사'의 의미를 가지고 있습니다. 그리고 제가 공부하는 IT업계에서도 이 에반젤리스트가 있지요. 이분들이 하는 일은 쉽게 말해서 기술에 대해 전파하고 알리...
-
Nginx 를 이번에 사용하게 되었는데요. Nginx를 이용해서 폴더에 있는 파일을 받을 수 있게 하려합니다. mac OS에서 테스트할때의 nginx 의 nginx.conf 파일은 /usr/local/etc/nginx/nginx.conf 경...