Upload app

앱 설치 및 기능


Upload to eojji folder 앱을 사용하려면 Microsoft Windows 10이 설치된 장치가 필요합니다.

앱은 Microsoft Store에서 찾을 수 있습니다.

Microsoft Store에서 검색을 누르고 Upload to eojji folder를 입력하세요.

Windows 로고 키를 누르면 Microsoft Store가 있습니다. 없으면 검색 상자에서 Microsoft Store를 입력해 보세요.

또한 Microsoft Windows 10 앱 페이지를 열어서 앱을 검색할 수 있습니다.


앱 기능


  • Picker 버튼을 눌러서 윈도우 파일 탐색기가 열리면 파일들을 선택해서 Google 드라이브로 업로드할 수 있습니다.

  • 파일이나 폴더를 선택해서 Entries 버튼에 끌어다 놓기한 것을 Google 드라이브로 업로드할 수 있습니다.

  • 공유 드라이브를 업로드 저장소나 복사본 저장소로 선택할 수 있습니다.

  • (추가 기능) Google 드라이브에 저장된 파일이나 폴더를 윈도우로 다운로드할 수 있습니다.

  • (추가 기능) Google 드라이브에 저장된 파일이나 폴더를 Google 드라이브의 EOJJI folder로 복사할 수 있습니다.

제품 ID


패키지 매니페스트

패키지/ID/이름: EOJJI.Uploadtoeojjifolder

패키지/ID/게시자: CN=3070E201-608E-41B0-B617-1190F4BC8907

패키지/속성/게시자 표시 이름: 어찌닷컴


직접 링크 및 Microsoft Store ID

URL: https://www.microsoft.com/store/apps/9NSMRBSRL93Q

Microsoft Store ID: 9NSMRBSRL93Q

Microsoft Store 프로토콜 링크: ms-windows-store://pdp/?productid=9NSMRBSRL93Q

개발 이력

추가 기능 구매 버튼 추가

2021. 05. 20.


추가 기능을 구매할 수 있는 버튼을 추가했습니다.

추가 기능을 구매하면 Google 드라이브 내에서 폴더의 복사본을 만들 수 있으며 Google 드라이브에 있는 폴더를 Windows로 다운로드할 수 있습니다.

  1. "Purchase Add-On" 버튼을 누르면 추가 기능을 구매할 수 있는 팝업 메뉴가 표시됩니다.

EOJJI Folder link 추가

2021. 05. 02.


EOJJI Folder는 업로드나 복사 작업할 때 파일 복사본이 저장되는 곳입니다.

앱 화면에 EOJJI Folder를 열 수 있는 링크를 추가했습니다.


  1. 앱을 설치하고 처음 실행했다면 My drive로 표시됩니다.

  2. "Sign in with Google" 버튼을 눌러서 Google에 로그인하고 "Create Folder" 버튼을 누르면 로그인한 Google 드라이브에 폴더 이름이 EOJJI Folder폴더를 만들고 화면에 링크를 표시합니다.

  3. Google에 로그인한 상태에서 Google drive URL 입력 상자에 공유 드라이브의 URL을 복사해서 붙여 넣고 "Create Folder" 버튼을 누르면 입력한 공유 드라이브에 폴더 이름이 EOJJI Folder폴더를 만들고 화면에 링크를 표시합니다.

개발 배경

2021. 04. 30.


개발하게 된 배경 이야기입니다.


파일을 Google 드라이브에 저장하기

https://huysep.tistory.com/3

Send promotional code.gs - GitHub Gist

2021. 04. 28.


앱 사용자에게 프로모션 코드를 제공하기 위해서 Google forms를 만들고 스크립트를 작성했습니다.

설문지에 구글 계정의 이메일을 제출하면 이메일로 프로모션 코드 (또는 사용 가능한 URL)를 보냅니다.

프로모션 코드를 받았다면 이메일 본문의 URL을 클릭하여 제품을 무료로 받을 수 있습니다.


프로모션 코드 받기 양식

https://docs.google.com/forms/d/e/1FAIpQLSfcJYuzkfBWkZy7cq6vV-gZwxSa5cRSiAlvR-wfQom5po742Q/viewform?usp=sf_link



Generate promotional codes

https://docs.microsoft.com/en-us/windows/uwp/publish/generate-promotional-codes

Code redemption user experience


After you distribute a promotional code (or its redeemable URL) to a customer, they can click the URL to get the product for free. Clicking the redeemable URL will launch an authenticated Redeem your code page at https://account.microsoft.com/billing/redeem. This page includes a description of the app the user is about to redeem. If the customer is not logged in with their Microsoft account, they may be prompted to do so. Your customer can also visit https://account.microsoft.com/billing/redeem and enter the code directly.

DataAccess.cs - GitHub Gist

2021. 04. 23.


앱 데이터를 관리하는 Sqlite 테이블입니다.

LogTable, DownloadFolderTable, DownloadFileTable, CopyFolderTable, CopyFileTable

Handle URI activation 추가

2021. 04. 17.


  1. 앱에 URI Scheme을 추가했습니다.

Protocol = "eojji.up"


Handle URI activation

https://docs.microsoft.com/en-us/windows/uwp/launch-resume/handle-uri-activation

Cancel 버튼 추가

2021. 04. 16.


  1. Google 드라이브에 저장된 폴더 주소를 복사해서 입력 상자에 붙여 넣고 Download 버튼을 누르면 폴더에 있는 파일들을 다운로드합니다.

  2. 사용자가 앱 화면에서 "Cancel" 버튼을 누르면 작업할 파일들과 작업할 폴더에 해당하는 테이블의 행들을 찾아서 상태 칼럼을 완료로 업데이트합니다.

다운로드 작업을 취소한 후 다른 파일을 다운로드하려면 Download 버튼을 누르세요.

Open folder 버튼 추가

2021. 04. 10.


  1. 사용자가 앱 화면에서 "Open folder" 버튼을 누르면 윈도우 탐색기를 사용해서 App_data 폴더에 있는 Downloads 폴더를 엽니다.


Application data locations

https://docs.microsoft.com/en-us/windows/uwp/files/file-access-permissions#application-data-locations

LocalFolderDownloads = await App.LocalFolder.CreateFolderAsync("Downloads", CreationCollisionOption.OpenIfExists);

Log file 버튼 추가

2021. 03. 30.


  1. 사용자가 "Log file" 버튼을 누르면 Sqlite DB(AppDataSqlite.db)에서 LogTable의 모든 행을 읽습니다.

  2. 읽은 로그를 저장하기 위해서 앱의 로컬 폴더에 log.txt 파일을 만듭니다.

  3. log.txt 파일에 로그를 기록하고 편집기를 실행해서 보여줍니다.

  4. LogTable의 모든 행을 지웁니다.

Toast Notification 추가

2021. 03. 28.


앱이 EnteredBackground 될 때 작업이 되는지 검사하기 위해서 알림(BackgroundApp.cs )을 추가했습니다.

앱이 Background 상태일 때 작업이 진행되는 걸로 봐서 in-process background task를 사용하지 않아도 되겠습니다.

파일 다운로드

2021. 03. 26.


  1. 사용자가 Google drive URL 입력 상자에 Google 드라이브 파일 주소를 복사해서 붙여 넣고 "Download" 버튼을 누르면 파일 탐색기에서 다운로드 폴더가 열립니다. 새 폴더를 만들거나 원하는 폴더를 선택할 수 있습니다. 다운로드가 완료되면 파일과 연결된 프로그램이 실행됩니다.

  2. 다운로드할 파일이 Workspace 문서이면 PDF 형식이 다운로드됩니다.

Entries에 파일 끌어서 놓기

2021. 03. 25.


  1. 파일 끌어서 놓기로 업로드하려면 파일들을 선택해서 앱의 "Entries" 버튼에 끌어다 놓고 "Upload" 버튼을 누르세요.

앱의 평가판 구현

2021. 03. 24.


  1. 앱의 무료 평가 기간을 15일로 설정했습니다.

1분 주기로 파일 복사 시도

2021. 03. 24.


  1. Google 드라이브 파일을 복사하는 동안 User rate limit exceeded 오류로 인해 복사 작업이 실패하면 1분 주기로 복사를 시도합니다.

SQLite 추가

2021. 03. 22.


  1. 앱 로그를 기록하기 위해서 SQLite를 사용합니다.

    • 사용자가 앱을 시작할 때 앱 로컬 폴더에 SQLite DB 파일(AppDataSqlite.db)이 없으면 만듭니다.

    • 경로를 포함한 DB 파일 이름을 DataAccess class의 초기화 Method에 전달해서 로그 테이블이 없으면 만듭니다.

    • 로그 테이블에서 앱 로그를 보려면 sqlite3을 사용하세요.

    • 앱 로컬 폴더(ApplicationData.Current.LocalFolder)를 보려면 "User Info" 버튼을 누르세요.

Google 드라이브에 있는 파일 복사하기

2021. 03. 13.


  1. 사용자가 Google drive URL 입력 상자에 Google 드라이브 파일 주소를 복사해서 붙여 넣고 "Copy" 버튼을 누르면 입력한 파일을 Google 드라이브의 EOJJI folder에 복사합니다.

  2. 공유 받은 파일을 복사하기 위해서 https://www.googleapis.com/auth/drive 권한이 필요합니다.

  3. 폴더 복사는 지원하지 않습니다. 다른 앱( Preorder Copy )을 사용하세요.

  4. 복사 중 User rate limit exceeded가 발생했을 때 "Copy" 버튼만 누르면 복사를 다시 시도합니다.

공유 드라이브에 업로드

2021. 03. 12.


  1. 사용자가 Google drive folder 입력 상자에 공유 드라이브 주소를 복사해서 붙여 넣고 "Create Folder" 버튼을 클릭하면 공유 드라이브의 ID를 앱에 저장합니다. 이 상태에서 "Upload" 버튼을 클릭하면 FutureAccessList에 있는 항목을 사용자가 지정한 공유 드라이브에 업로드합니다.

  2. 사용자가 "Create Folder" 버튼을 클릭했을 때 Google drive folder 입력 상자가 비어 있으면 사용자의 Google 드라이브에 폴더를 만들고 만든 폴더 ID를 앱에 저장합니다.

파일 여러 개 업로드하기

2021. 03. 11.


  1. 사용자가 "Picker" 버튼을 클릭하면 파일 탐색기가 열리는데 여기서 파일 여러 개를 선택할 수 있습니다. 선택한 파일들은 FutureAccessList에 저장됩니다.

  2. 사용자가 "Entries" 버튼을 클릭하면 FutureAccessList에 있는 항목을 TextBox에 출력합니다.

  3. 사용자가 "Clear" 버튼을 클릭하면 FutureAccessList에 있는 항목을 삭제합니다.

  4. 사용자가 "Upload" 버튼을 클릭하면 FutureAccessList에 있는 항목을 Google 드라이브 EOJJI 폴더에 업로드합니다.

  5. 업로드 중 앱을 종료해도 앱을 다시 실행해서 "Upload" 버튼을 클릭하면 이어서 업로드 할 수 있습니다.

최초 배포

2021. 02. 21.


  1. 사용자가 "Sign in with Google" 버튼을 클릭하면 사용자가 선택한 Google 계정으로 로그인하면서 앱이 Google 드라이브에 쓸 수 있는 권한을 요청합니다.

  2. 사용자가 "User Info" 버튼을 클릭하면 로그인한 사용자의 프로필을 조회해서 보여 줍니다.

  3. 사용자가 "Create Folder" 버튼을 클릭하면 로그인한 사용자의 Google Drive에 EOJJI folder를 만듭니다.

  4. 사용자가 "UpLoad" 버튼을 클릭하면 파일을 선택할 수 있게 하고 선택한 파일을 Google Drive의 EOJJI folder에 업로드합니다.

Upload 기능에 Backgroud 처리가 없습니다.


UWP 앱은 사용자가 최소화하거나 다른 앱으로 전환하면 앱이 중단될 수 있습니다.

백그라운드 전송 기능이 없어서 작업이 비정상적으로 종료될 수 있습니다.

참고: Windows 10 UWP (유니버설 Windows 플랫폼) 앱 수명 주기


Upload 버튼을 클릭하면 Log TextBox에 Step 3: Upload the file이 표시되고 업로드가 시작됩니다.

업로드가 완료되면 OK, Step 3:이 표시됩니다.

토큰 새로 고침


사용자가 "Sign in with Google" 버튼을 클릭해서 Google에 로그인하고 앱에서 요청한 권한을 승인하면 Access tokenRefresh token이 발행되고 앱에 저장됩니다.

사용자가 "User Info" 버튼과 같은 버튼을 클릭하면 앱에 저장된 Access token을 사용해서 Google에 서비스를 요청합니다.

Access token의 유효 시간이 1시간이라 유효하지 않은 토큰으로 서비스를 요청하면 오류가 발생합니다.

이 때 Refresh token을 사용해서 Access token을 다시 받아서 앱에 저장합니다.

참고: OAuth 2.0 for Mobile & Desktop Apps

참고

1. Upload file data - Google Drive API

https://developers.google.com/drive/api/v3/manage-uploads


2. OAuth 2.0 for Mobile & Desktop Apps

https://developers.google.com/identity/protocols/oauth2/native-app


3. HttpClient - UWP applications

https://docs.microsoft.com/en-us/windows/uwp/networking/httpclient


4. Open files and folders with a picker - UWP applications

https://docs.microsoft.com/en-us/windows/uwp/files/quickstart-using-file-and-folder-pickers


5. Save and load settings in a UWP app - UWP applications

https://docs.microsoft.com/en-us/windows/uwp/get-started/settings-learning-track


6. HttpClient - microsoft/Windows-universal-samples

https://github.com/microsoft/Windows-universal-samples/tree/master/Samples/HttpClient


7. AccessListEntryView Class

https://docs.microsoft.com/en-us/uwp/api/windows.storage.accesscache.accesslistentryview?view=winrt-19041


8. Upload files and folders to Google Drive

https://support.google.com/drive/answer/2424368?co=GENIE.Platform%3DDesktop&hl=en


9. Files: copy | Google Drive API | Google Developers

https://developers.google.com/drive/api/v3/reference/files/copy


10. Use a SQLite database in a UWP app

https://docs.microsoft.com/en-us/windows/uwp/data-access/sqlite-databases


11. Localize strings in your UI and app package manifest

https://docs.microsoft.com/en-us/windows/uwp/app-resources/localize-strings-ui-manifest


12. File access permissions - Universal Windows Platform (UWP) apps

https://docs.microsoft.com/en-us/windows/uwp/files/file-access-permissions

개인 정보 보호 정책

www.eojji.com/privacy