개인 개발자의 앱스토어 도전기 (d2 오픈세미나 발표)

65
앱스토어 도전기 ‘보안카드 위젯’ 개발자의 노수진 연세대학교

Upload: soojin-ro

Post on 15-Apr-2017

2.692 views

Category:

Mobile


2 download

TRANSCRIPT

Page 1: 개인 개발자의 앱스토어 도전기 (D2 오픈세미나 발표)

앱스토어�도전기

‘보안카드�위젯’�개발자의

노수진�연세대학교

Page 2: 개인 개발자의 앱스토어 도전기 (D2 오픈세미나 발표)

소개

▸ 연세대학교�경영학과�(2009.�3�~�)�

▸ ���������������SW�Developer�(2015.�1�~�2015.�11)�

▸ ��������������������������������모바일�프로그래밍�/�Entrepreneurship�

(2013.�1�~�2015.�1)

Page 3: 개인 개발자의 앱스토어 도전기 (D2 오픈세미나 발표)

목차

▸ 앱�소개�

▸ 보안을�위해�신경�쓴�기능들�

▸ 유료/무료�버전�scheme�나누기�

▸ 걸어온�길�

▸ 앱스토어�리뷰�관리�

▸ Q�&�A

Page 4: 개인 개발자의 앱스토어 도전기 (D2 오픈세미나 발표)

타임라인

▸ 2014년�12월�17일�출시�

▸ 12월�19일�‘금융’�부분�유료앱�1위�

▸ 12월�21일�앱스토어�유료앱�8위�

▸ 2015년�1월�15일�버전�1.1.0�업데이트�

▸ 1월�28일�앱스토어�유료앱�2위�

▸ 2016년�6월�현재,�50~100위권

Page 5: 개인 개발자의 앱스토어 도전기 (D2 오픈세미나 발표)

타임라인

Page 6: 개인 개발자의 앱스토어 도전기 (D2 오픈세미나 발표)

앱�소개

보안카드�위젯

▸ 2014년…�토스,�카카오페이,�네이버페이가�없던�그�시절�

▸ 계좌이체할때�반드시�거쳐야�하는�보안카드�입력을�훨씬�편하게�

▸ https://www.youtube.com/watch?v=xVxYTF_uPIs�

▸ 보안카드를�입력해놓고�쓰는�앱이�없었던�것은�아니었지만�iOS�8에�추가된�신기능인�Today�extension을�활용한�것은�최초

Page 7: 개인 개발자의 앱스토어 도전기 (D2 오픈세미나 발표)

보안�이슈

Page 8: 개인 개발자의 앱스토어 도전기 (D2 오픈세미나 발표)

PRIVACY

1.�iOS�Keychain�Overview

▸ Core�Data,��NSUserDefaults,�plist와�같은�iOS�storage의�일종�

▸ key-value�형태로�사용�

▸ 암호화되어�저장�

▸ Keychain�Group�생성�가능�

▸ 사용자가�앱을�삭제해도�데이터는�보존�

▸ 접근�가능�시점과�접근�권한�세부�지정�가능�

▸ iCloud�Drive로�백업/복원,�multidevice�지원�가능

Page 9: 개인 개발자의 앱스토어 도전기 (D2 오픈세미나 발표)

PRIVACY

Keychain�Group�생성

▸ 다른�앱들이�하나의�Keychain�storage를�공유�

▸ Today�Extension은�모체�앱과�다른�앱으로�취급�

▸ 별도�샌드박스,�App�Id,�Provisioning�Profile�등�

▸ 앱과�위젯이�데이터를�공유하려면�App�Group�/�Keychain�Group�활용�필수

Page 10: 개인 개발자의 앱스토어 도전기 (D2 오픈세미나 발표)

PRIVACY

Keychain�Group�생성

Page 11: 개인 개발자의 앱스토어 도전기 (D2 오픈세미나 발표)

PRIVACY

Page 12: 개인 개발자의 앱스토어 도전기 (D2 오픈세미나 발표)

PRIVACY

앱�삭제후�재설치시�Passcode�뚫리는�문제

▸ 현상�:�Passcode와�보안코드는�사용자의�개인정보이기�때문에�키체인에�저장했지만�잠금�여부는�NSUserDefaults에�저장하고�있었음.�

▸ 앱�삭제후�재설치시�잠금이�풀리고�저장되어있던�보안코드가�고스란히�노출�

▸ 해결�:�키체인에�저장한�내용은�앱이�삭제되어도�남아�있기�때문에�잠금�설정�flag도�키체인에�저장하여�앱�재설치�시에도�보안코드�데이터�보안�유지

Page 13: 개인 개발자의 앱스토어 도전기 (D2 오픈세미나 발표)

PRIVACY

앱�삭제후�재설치시�Passcode�뚫리는�문제

▸ 활용�:�자동�로그인�기능이�있는�앱인데�가끔�로그인이�풀리거나�로그인정보가�사라지는�현상이�있는�경우,�관련�데이터를�NSUserDefaults에�저장하고�있는지�확인�

▸ 실제로�NSUserDefaults에�저장해둔�데이터가�손실되었다는�제보�다수�(Stackoverflow)�

▸ 따라서�로그인이나�잠금�관련된�중요한�데이터는�키체인에�저장�

‣ 애플�공식�가이드에�따르면�키체인에�저장할�만한�데이터는�메모리에�올려두고�사용하지�말라고�권장

Page 14: 개인 개발자의 앱스토어 도전기 (D2 오픈세미나 발표)

PRIVACY

아이폰이�잠금�상태일때�Today�Extension�차단

▸ 아이폰의�잠금�화면에서도�알림�센터를�내려서�확인할�수�있기�때문에,�이때�보안카드가�검색이�된다면�심각한�문제�

▸ 해결�방법�:�접근�가능�시점과�접근�권한�세부�지정

Page 15: 개인 개발자의 앱스토어 도전기 (D2 오픈세미나 발표)

PRIVACY

아이폰이�잠금�상태일때�Today�Extension�차단

Page 16: 개인 개발자의 앱스토어 도전기 (D2 오픈세미나 발표)

PRIVACY

▸ 0�:�success�

▸ -25240~-25279,�-25290~-25329

Page 17: 개인 개발자의 앱스토어 도전기 (D2 오픈세미나 발표)

PRIVACY

▸ 권한이�없을�시점에�데이터�접근�시�발생�

예)�kSecAttrAccessibleWhenUnlocked로�저장한�데이터를�잠금�상태에서�불러올때

Page 18: 개인 개발자의 앱스토어 도전기 (D2 오픈세미나 발표)

PRIVACY

Page 19: 개인 개발자의 앱스토어 도전기 (D2 오픈세미나 발표)

PRIVACY

Page 20: 개인 개발자의 앱스토어 도전기 (D2 오픈세미나 발표)

PRIVACY

멀티태스킹�시�노출되는�앱�스냅샷�블러�처리

▸ iOS�멀티태스킹�시�마지막�VC의�상태가�스냅샷�형태로�남아�있어서�보안코드�노출�우려

Page 21: 개인 개발자의 앱스토어 도전기 (D2 오픈세미나 발표)

PRIVACY

멀티태스킹�시�노출되는�앱�스냅샷�블러�처리

▸ AppDelegate.m

-�applicationDidEnterBackground:

-�applicationDidBecomeActive:

Page 22: 개인 개발자의 앱스토어 도전기 (D2 오픈세미나 발표)

PRIVACY

Page 23: 개인 개발자의 앱스토어 도전기 (D2 오픈세미나 발표)

PRIVACY

iOS�커스텀�키보드�차단

▸ iOS8�에서�처음�소개된�커스텀�키보드�

▸ 키보드�앱이�유저의�모든�입력값을�알�수�있음

Page 24: 개인 개발자의 앱스토어 도전기 (D2 오픈세미나 발표)

▸ AppDelegate.m

PRIVACY

iOS�커스텀�키보드�차단

- application: shouldAllowExtensionPointIdentifier:

Page 25: 개인 개발자의 앱스토어 도전기 (D2 오픈세미나 발표)

BUILD�SCHEME

무료버전�&�유료버전�나누기

▸ 동기�:�수익�극대화�

▸ 무료버전으로�진입�장벽을�낮춰�다운로드�유도�

▸ 무료버전은�은행을�1곳만�등록�가능하고�배너광고�부착�

▸ 인앱결제($0.99)�후�유료버전과�완전히�동일한�기능�제공

Page 26: 개인 개발자의 앱스토어 도전기 (D2 오픈세미나 발표)

BUILD�SCHEME

무료버전�&�유료버전�나누기

▸ xcconfig�파일과�Xcode의�Scheme�기능�활용

Page 27: 개인 개발자의 앱스토어 도전기 (D2 오픈세미나 발표)

BUILD�SCHEME

▸ Base.xcconfig

Page 28: 개인 개발자의 앱스토어 도전기 (D2 오픈세미나 발표)

BUILD�SCHEME

▸ Paid.xcconfig

Page 29: 개인 개발자의 앱스토어 도전기 (D2 오픈세미나 발표)

BUILD�SCHEME

▸ Freemium.xcconfig

Page 30: 개인 개발자의 앱스토어 도전기 (D2 오픈세미나 발표)

BUILD�SCHEME

▸ xcconfig�적용

Page 31: 개인 개발자의 앱스토어 도전기 (D2 오픈세미나 발표)

BUILD�SCHEME

▸ scheme�생성

Page 32: 개인 개발자의 앱스토어 도전기 (D2 오픈세미나 발표)

BUILD�SCHEME

▸ scheme�생성

Page 33: 개인 개발자의 앱스토어 도전기 (D2 오픈세미나 발표)

BUILD�SCHEME

▸ scheme�생성

Page 34: 개인 개발자의 앱스토어 도전기 (D2 오픈세미나 발표)

BUILD�SCHEME

▸ scheme�생성

Page 35: 개인 개발자의 앱스토어 도전기 (D2 오픈세미나 발표)

BUILD�SCHEME

▸ xcconfig�적용�▸ $(xcconfig파일에서�생성한�변수명)�▸ ${xcconfig파일에서�생성한�변수명}

Page 36: 개인 개발자의 앱스토어 도전기 (D2 오픈세미나 발표)

BUILD�SCHEME

▸ xcconfig�적용�

▸ Info.plist

Page 37: 개인 개발자의 앱스토어 도전기 (D2 오픈세미나 발표)

BUILD�SCHEME

▸ xcconfig�적용�

▸ 앱�아이콘

Page 38: 개인 개발자의 앱스토어 도전기 (D2 오픈세미나 발표)

BUILD�SCHEME

▸ xcconfig�적용�

▸ GCC�PREPROCESSOR�MACRO

Page 39: 개인 개발자의 앱스토어 도전기 (D2 오픈세미나 발표)

BUILD�SCHEME

▸ xcconfig�적용�

▸ 매크로로�무료버전에만�배너광고�삽입�

▸ 무료버전에만�사용하는�pod

Page 40: 개인 개발자의 앱스토어 도전기 (D2 오픈세미나 발표)

다운로드�수

Page 41: 개인 개발자의 앱스토어 도전기 (D2 오픈세미나 발표)

걸어온�길

▸ 처음으로�외부에�공개하는�데이터�

▸ ‘국내용’�앱이라는�특성상�한국�앱스토어에만�한정�

▸ 유료�앱�부분에�한정

Page 42: 개인 개발자의 앱스토어 도전기 (D2 오픈세미나 발표)

걸어온�길

▸ 2014년�12월�17일�출시,�19일�‘금융’�카테고리�1위,�전체�18위�

▸ 또�다시�이틀�뒤�21일�전체�8위�(누적)�

▸ 약�한달�뒤,�2015년�1월�28일�전체�2위�(누적)

3746814430

Page 43: 개인 개발자의 앱스토어 도전기 (D2 오픈세미나 발표)

걸어온�길

▸ 1.1�버전�업데이트�시점

▸ 별로�기능�추가�한게�없는데판매량�급�증가�

‣ 이쁜�아이콘의�영향이라고�추측

Page 44: 개인 개발자의 앱스토어 도전기 (D2 오픈세미나 발표)

▸ 처음�5위권�진입한�1월�24일�~�3월�3일(39일)�까지�계속�5위권�유지�

▸ 5위�이내�일때�하루�평균�

▸ 1일�최다�다운로드

걸어온�길

8260211.8330

Page 45: 개인 개발자의 앱스토어 도전기 (D2 오픈세미나 발표)

▸ 10~30위권�유지할�때�

▸ 30~100위�

걸어온�길

30~5010~20

Page 46: 개인 개발자의 앱스토어 도전기 (D2 오픈세미나 발표)

걸어온�길

흥미로운�발견

▸ 2015년�다운로드수�그래프�

▸ 힌트�:�10월�23일

Page 47: 개인 개발자의 앱스토어 도전기 (D2 오픈세미나 발표)

걸어온�길

흥미로운�발견

▸ 2015년�다운로드수�그래프�

▸ 10월�23일�아이폰�6s�국내�출시�

▸ 사람들이�폰을�새로�산�후�/�바꾼�후�새�앱을�다운로드�

▸ 이때를�공략해서�공격적인�마케팅�실시!

Page 48: 개인 개발자의 앱스토어 도전기 (D2 오픈세미나 발표)

앱스토어�리뷰�관리

Page 49: 개인 개발자의 앱스토어 도전기 (D2 오픈세미나 발표)

APP�STORE�REVIEWS

앱스토어�랭킹�알고리즘

▸ 전체�다운로드�수�

▸ 다운로드�증가�추세�

▸ 그리고..�리뷰�평점과�retention!?

Page 50: 개인 개발자의 앱스토어 도전기 (D2 오픈세미나 발표)

APP�STORE�REVIEWS

https://techcrunch.com/2013/08/23/apples-app-store-rankings-algorithm-changed-to-favor-ratings-and-possibly-engagement/

Page 51: 개인 개발자의 앱스토어 도전기 (D2 오픈세미나 발표)

유료앱�상위�100위�앱�중�평점이�최소�4별�이상인�비율

APP�STORE�REVIEWS

앱스토어�리뷰�관리의�필요성

http://www.apptentive.com/blog/app-store-ratings-reviews-guide/

무료앱�상위�100위�앱�중�평점이�최소�4별�이상인�비율

최고매출�상위�100위�앱�중�평점이�최소�4별�이상인�비율

Page 52: 개인 개발자의 앱스토어 도전기 (D2 오픈세미나 발표)

APP�STORE�REVIEWS

앱스토어�리뷰�관리의�필요성

http://www.apptentive.com/blog/app-store-ratings-reviews-guide/

평점�2별인�앱을�다운받을지�고려해보겠다는�비율

평점�3별인�앱을�다운받을지�고려해보겠다는�비율

평점�4별인�앱을�다운받을지�고려해보겠다는�비율

Page 53: 개인 개발자의 앱스토어 도전기 (D2 오픈세미나 발표)

APP�STORE�REVIEWS

앱스토어�리뷰�관리의�어려움�SELF-SELECTION�BIAS

http://www.apptentive.com/blog/app-store-ratings-reviews-guide/

부정적인�경험�후�리뷰를�남기는�비율 긍정적인�경험�후�리뷰를�남기는�비율

▸ 부정적인�경험쪽으로�bias된�유저그룹이�남긴�리뷰와�별점은�대표성을�갖기�어려움에도�어쩔수�없다

Page 54: 개인 개발자의 앱스토어 도전기 (D2 오픈세미나 발표)

APP�STORE�REVIEWS

‘보안카드�위젯’의�리뷰�관리

Page 55: 개인 개발자의 앱스토어 도전기 (D2 오픈세미나 발표)

APP�STORE�REVIEWS

‘보안카드�위젯’의�리뷰�관리

ㅗㅗ

Page 56: 개인 개발자의 앱스토어 도전기 (D2 오픈세미나 발표)

APP�STORE�REVIEWS

‘보안카드�위젯’의�리뷰�관리

ㅗㅗ

▸ 앱스토어�사용자들에게도�도움이�되지�않고�좋을게�없는�이런�리뷰는�우측하단�신고�버튼�활용

Page 57: 개인 개발자의 앱스토어 도전기 (D2 오픈세미나 발표)

APP�STORE�REVIEWS

‘보안카드�위젯’의�리뷰�관리

Page 58: 개인 개발자의 앱스토어 도전기 (D2 오픈세미나 발표)

APP�STORE�REVIEWS

‘보안카드�위젯’의�리뷰�관리

리뷰가�아니고�욕설입니다

Page 59: 개인 개발자의 앱스토어 도전기 (D2 오픈세미나 발표)

▸ 신고가�적합하다면�2~3일�내로�부적절한�리뷰�삭제�

▸ 업데이트�직후�리뷰가�얼마�없을때는�1별�짜리�리뷰가�평균�별점�0.5~1별을�좌지우지�

▸ 평균�별점�1개의�차이는�15%�->�50%�->�96%

‘보안카드�위젯’의�리뷰�관리

APP�STORE�REVIEWS

Page 60: 개인 개발자의 앱스토어 도전기 (D2 오픈세미나 발표)

APP�STORE�REVIEWS

‘보안카드�위젯’의�리뷰�관리

정말�좋은�앱이지만�리뷰�쓰라고�강요�좀�작작해라

평가하기�싫음�안하는거지�할때마다�떠서�내가줄�별은�없다

▸ 좋은�리뷰는�기분이�좋지만�나쁜�리뷰는�개선점을�찾는데�크나큰�도움�

▸ 합당한�리뷰는�받아드려서�앱을�개선

Page 61: 개인 개발자의 앱스토어 도전기 (D2 오픈세미나 발표)

APP�STORE�REVIEWS

LESSON�LEARNED

▸ 대대적인�UI�변화가�있었던�3월�2.0�버전�업데이트�

▸ 기존�유저들의�강한�반발전체

2.0�버전

Page 62: 개인 개발자의 앱스토어 도전기 (D2 오픈세미나 발표)

APP�STORE�REVIEWS

LESSON�LEARNED

▸ 별점�2.5점�

▸ 급격한�변화를�지양하자�

▸ 또�한편으로는…�

▸ 대부분의�유저는�아무�불평없이�잘�사용하고�있을지도�모르지만�강한�불만을�표한�30명�남짓한�리뷰로�인해�낮아진�별점�때문에�다운로드가�감소하고�순위�하락�

▸ 그래도�어쨌든…�

▸ 개인�개발자에게는�별점이�중요하기�때문에�피드백�반영해서�업데이트�예정

Page 63: 개인 개발자의 앱스토어 도전기 (D2 오픈세미나 발표)

APP�STORE�REVIEWS

앱스토어�RATINGS�&�REVIEWS

▸ 앱스토어�내�경쟁이�끝없이�심해지는�요즘�앱스토어�별점은�그�어느때보다�중요�

▸ 별점과�리뷰는�앱스토어에서�내�앱이�발견되고,�유저들이�trial�해보게�하는�중요한�역할

Page 64: 개인 개발자의 앱스토어 도전기 (D2 오픈세미나 발표)

마무리

Page 65: 개인 개발자의 앱스토어 도전기 (D2 오픈세미나 발표)

Q & A