Android 이슈 - SMS 및 CALL_LOG 권한 사용에 적용되는 Google Play 정책 변경사항





알림 - 이 앱은 정책 변경의 영향을 받습니다.

이 앱은 SMS 및 CALL_LOG 권한 사용에 적용되는 Google Play 정책 변경사항의 영향을 받습니다. 정책을 준수하지 않는 앱은 2019년 1월 9일에 Google Play에서 삭제될 수 있습니다.



1. 원인

- 정책 변경으로 인해 permission의 사용이 제한됨. 


* 제한되는 permssion 




위의 Permission을 사용하는 앱을 경우 위와같은 에러 문구가 나타나게 됩니다.

추측컨대, 대다수의 분들이 CALL_PHONE, SEND_SMS Permission 으로 인해 

많이들 걸릴거라 생각이 됩니다 ㅎㅎ 


이번 패치의 핵심의 핵심을 정리하면, 

용도에 맞는 Permission 제한이 되겠네요. 


그래서 일반적인 앱의 경우 위의 퍼미션 사용을 할 수 가없고

앱기능 자체가 전화, 메시지 관련 앱인 경우에만 사용을 할 수있습니다. 


2. 해결방법

1) 구글에 문의하여 예외요청 

- 구글링해본결과 해외의 유명한 앱들도 거부당했다는 글들을 보아,

거의 불가능하다고 보여 집니다;;


2) 퍼미션 제거 및 대체  

- CALL_PHONE 대체 : 전화를 직접거는게 아닌 Dial 화면에 표시하도록 변경 , 이 경우 별도로 퍼미션이 필요하지 않음. 

Uri callUri = Uri.parse("tel:" + "전화번호(ex, 010-1111-1111)");
Intent intent = new Intent(Intent.ACTION_DIAL, callUri);
startActivity(intent);


- SEND_SMS 대체 : 위와 동일, 문자입력 화면에 Text만 전 후 발송은 사용자의 액션에 의해 발송되도록 변경

Uri smsUri = Uri.parse("smsto:" + "전화번호(ex, 010-1111-1111)");


Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setData(smsUri);

startActivity(intent);


상세내용은 : https://support.google.com/googleplay/android-developer/answer/9047303

> 일반용도의 대안 페이지 참조.


3. 요약

- 정책이 변경된 퍼미션 사용을 하고 있다면 전화, 메시지전용앱인 경우에만 사용이 가능하도록 바뀜

- 기존앱의 경우 해당 퍼미션 제거 후 재배포를 해야함 

https://support.google.com/googleplay/android-developer/answer/9047303  권한 요청 양식을 통해 

예외요청 및 기간 유예가 가능함(3월까지) 


해당 정책변경은 저도 처음 당해보는 일이라 일부 잘못된 정보가 있을 수 있습니다.

잘못된 부분이 있다면 댓글로 남겨주세요!


저처럼 헤매는 분들에게 도움이 되길바라요. (도움이 됐다면 아래 하트한번 눌러주세요 ㅎㅎ ) 

안드로이드 구글 앱서명 간략요약


참조 : https://developer.android.com/studio/publish/app-signing?hl=ko


설명이 길어서 복잡했는데, 

적용해보니 간단하네요.


1. 요약 

기존엔 인증서파일을 잃어버리게 되면 앱을 업데이트를 할 수 없는 크리티컬 이슈가 발생하여 

생긴 기능으로 보입니다. or 아이폰의 인증서 관리방법을 따라했거나 ㅎㅎ

핵심은 앱서명인증서와 업로드인증서의 분리가 되겠네요.


앱서명인증서 > 마켓에 실제로 등록할때 사용


업로드인증서 >  앱을 업로드할때 사용

*구글에 문의하여 재발급 가능 


앱서명인증서라는게 추가로 생겼고 

해당 인증서는 자동으로 생성되어, 

구글 클라우드에 저장되고 관리가 됩니다. ( 분실 및 관리의 부담이 줄어듬 )

이로인해, 서두에 설명한 인증서 분실로 인한 앱 업데이트 문제가 해결 됐습니다. 



2. 적용방법



실제로 적용할땐 기존방식과 달라지는 부분은 없습니다.

인증서 생성 > signing > 업로드


제가 헷갈렸던 부분이 업로드용 키를 어디서 만들어야 하나 싶었는데, 

그냥 기존 처럼 인증서를 만들어서 등록하면 해당 인증서가 업로드 키로 등록이 됩니다.

* 기존처럼 인증서는 계속 보관해서 써야하는건 같습니다.  (분실시에는 구글에 문의해서 재발급해야하니...)



3. 주의점

앱에서 인증서의 SHA1키값을 사용하는 경우 필히 배포용 인증서의 SHA1으로 바꿔주어야합니다. 

제가 사용 하는 프로젝트의 경우 구글맵 API의 사용이 제한됐네요. 


찾아보니 해당 각정 Open API 키 생성할때 SHA1값을 많이사용하여 해당 문제가 많이 발생하는것 같네요.

기존에 Open API 쓰시는 분이나 구글 API를 사용하시는 분들은 필히 확인하세요!


앱등록 페이지 좌측메뉴 > 앱서명 부분에 보면 서명인증서라는 항목 참조.



끝으로, 신규로 배포하는 앱이라면 무조건 구글앱 서명으로 앱을 올리세요.!!!

그럼 도움이 됐길 바라요.


qcy t1 블루투스 이어폰 후기


요즘 핫한 그 아이템. 

qcy t1 저도 샀습니다.





하단에 보이는 케이스는 1000명 한정 기념품? 이라 실제로 구매시에는 못받을 수 있어요.



이어폰의 크기 - 성인남자 손가락 한마디 안됩니다 !



충전케이스 길이 (손안에 쏙들어갑니다 ㅎㅎ )  

주머니에도 잘들어가고 생각보다 작네요.



좀더 확대해서!!


착용시의 모습


막귀라 핸드폰 번들이어폰을 사용하는데 큰 차이는 없어보였네요. ( 막귀인점에 주목 ㅎㅎ )

다만, 통화 시 버스, 지하철안에서는 주변음이 많이 들려 상대방과 통화하기 어렵네요. 

조용한 장소 or 큰소리로 통화가능한 곳이라면 통화하는데 문제는 없구요. 

* 블루투스를 차고 있는 전 잘들리는데, 상대방에게 주변음이 다들려서 문제에요 ㅋㅋ 

저는 다들리는데 상대방이 주변음때문에 힘들다고 하네요.


블루투스 이어폰의 문제인 페어링 문제도 버스, 지하철 다니면서 아직까진 겪어보진 않았네요.

한번도 끊김없이 노래가 들렸어요.

일주정도 사용했는데 오늘 그냥 길거리 가다가 1~2초 정도 끊겼네요.


그리고 큰 장점이, 

이어폰케이스에서 이어폰을꺼낼때 자동으로 페어링이 되서 

따로 설정할 필요가 없다는게 정말 좋네요.


그리고 충전기 역활만 할줄 알았는데, 

충전케이블을 빼둬 3~4번 완충이 가능하다고 하네요!! 



제 기준에서 블투이어폰의 핵심 2가지(페어링, 소리) 모두 만족스러웠네요! 

다만, 통화는 살짝 아쉽네요. 

근데 어차피 버스나 지하철에선 왠만해선 안하니;; 

실제로 큰 문제가 되진 않을것 같습니다.


무엇보다 가성비!!!

축복받은(?!) 막귀로 인해 이정도면 정말 상상이상의 성능을 보여주네요.

시중에파는 번들이어폰들이랑 가격대가 비슷한 1~2만원대에 블루투스 이어폰이라니;;;


그리고, 편이성!!

얼마나 편할까 싶었는데 진짜 편리하네요.

핸드폰 배터리 없을때, 충전기에 꽂아두고 이어폰만 챙겨서 거실에서 티비보다가

블루투스 이어폰 버튼 눌러서 전화받아도 되니 정말 좋더라구요. 


요리하면서 통화도 할 수 있고 집에서 안 쓸줄 알았는데, 

오히려 집에서 더 활용도가 높네요.;




요것도 그냥 구매하세요. 후회 안합니다 .

* 사운드에 대해 민감한분들이라면 다른걸 사세요~;



구매한곳(현재 31000원대. 품절 풀렸네요~)

> http://itempage3.auction.co.kr/DetailView.aspx?ItemNo=B603816216&frm3=V2

*국내정식 유통사로 1년동안 AS가 가능하다는 장점이 있네요.  


현재 구매가능한곳 

https://qoo.tn/AASkKQ/Q129023490

* 가격도 21000원 대로 저렴하고 케이스도 같이 구매가능합니다. 

국내 정발이 품절 되서 링크를 걸었는데,  하루만에 품절이 풀렸네요 ㅎㅎ 

AS신경 안쓰고 좀 더 싼 제품 원하시는 분들을 위해 남겨둡니다.

시간이 아깝거나, 기회비용 아낄려는 분은 그냥 빨리사서 이용하는게 좋을수도 있어요.

현재 계속 품절이라 언제 재고가 들어올지 알 수 없거든요.



그럼 끝. 

[해외구매/전기 면도기] 끝판왕 전기 면도기 파나소닉 람대쉬 지르세요. 


링크 : https://www.amazon.com/gp/product/B00FPQ70Z2?th=1

예전 리뷰 : http://runlife.tistory.com/31

> 리뷰는 한단계 낮은 레벨의 면도기... 이번 건 끝판왕.

가격: $139.99



파나소닉 끝판왕 모델이며 가격도 정말 잘나왔습니다.

그냥 직구해서 되팔아도 이익 볼정도....


할인이 언제 종료 될지 모르니 우선 선구매 후 고민 하세요!!





지금 한단계아래 등급사용 4년째 사용중인데....

정말 만족하면서 사용해서 무조건 사라고 강추하는 제품입니다 .

4년째 됐는데 날을(날+망 , 5~7만원으로 기억) 올 3월 처음 교체 했네요.;;


그럼 마지막 지름신강림을 위해

아래사진 올립니다.




요건 국내에서 거의 동급의 면도기 사진...

이제 왜 사라고 하는지 아시겠죠 ??



더 이상 긴설명 안합니다 ㅎㅎ 

할인 끝나기전에 얼른 지르세요!


안드로이드 스튜디오 3.2 업데이트 후 문제 발생(Duplicate key)



로그내용 : Duplicate key com.android.build.gradle.internal.api.artifact.BuildableArtifactImpl@7c139f68


원인 : productFlavors 이름이 Main 으로 설정 되어있어서 발생.(build.grale 파일)


해결 : Main으로 설정 된 이름 변경




해당 에러 내용.


  



main > orginal 로 변경 후 정상동작!! 


그럼 도움이 되길 바라요.

[Android] TARGET  API 26 변경 관련 작업 내역


안드로이드 타겟 API최소 레벨이 26으로 제한되면서 

구 프로젝트 업데이트 작업을 진행하면서 변경된 내용 정리 및 정보 공유해봅니다.

target 26 변경 이유.


1.  GCM > FCM 변경

: GCM에서 만들어진 regstrion Id 로 푸시를 보내도 정상동작!!

: Eclipse 에선 정식 지원이 아니라 AAR파일을 가지고 적용.  저는 Android Studio로 변경. 

이슈 사항  - 구글 플레이서비스도 업데이트 함에 따라 

 GoogleMap 등 구글 플레이서비스 관련 호환성 패치도 같이 진행하였음


2. 알림채널 지원(api 26 이상)

: 알림을 채널별로 구분하고, 시스템에서 알림제어를 할수 있도록 변경

: 26이상에서 무조건 한개이상의 알림채널이 있어야 함( 없으면 알림이 안뜸 )

: 최초 한번만 생성하면 됨


이슈사항 -  앱의 설정으로 알림사운드, 진동을 제어했는데 알림 채널적용 후 기존 알림설정이 동작안됨

> 사운드, 진동을 알림채널에서 적용하는 걸로 변경. 즉 푸시메시지 건별로 알림설정이 불가능해짐.

* 저의 경우 특정 그룹별로 알림 관리를 했는데, 이 경우 그룹의 수만큼 알림 채널을 추가해 주어야해서, 

알림관리를 게시글, 댓글, 자신에게쓴 글 3개의 채널로 통합관리함

* 알림을 껏다가 다시  켤 경우 초기에 설정한 IMPORTANCE가 Default값으로 변경됨.

오픈 이슈 :  https://issuetracker.google.com/issues/65108694

https://issuetracker.google.com/issues/73719217

* 기존에 서버에 알림 값을 가지고 재설정 했는데 알림채널이 생기면서

앱이 아닌 OS에서 알림을 관리를 하기 때문에 변경된 값에 대한 상세 정보를 가져올수 없음. 

즉, 로컬에서만 관리 하도록 변경.


* 알림채널 설정 호출 방법 (채널아이디를 빼면 알림채널 설정 목록으로 이동합니다!)


3. Permission Check 지원 (api23 이상)

: 현재 사용하는 permission 중 Protection level이 dangerous 로 되어있으면, 사용자에게 동의를 받아야 정상동작함

: Protection level 검색방법

https://developer.android.com/reference/android/Manifest.permission

위 링크 들어간 후 사용중인 퍼미션 이름 검색


4. Background Service 임시제거

: 아래의 내용 때문에 임시 제거한  상태 

시스템이 서비스를 생성한 후, 앱은 5초 이내에 해당 서비스의 startForeground() 메서드를 호출하여 새 서비스의 알림을 사용자에게 표시해야 합니다. 앱이 이 시간 한도 내에 startForeground()를 호출하지 않으면 시스템이 서비스를 중단하고 이 앱을 ANR로 선언합니다.

> 백그라운드 상태를 유지하기 위해 서비스 종료시후 다시 백그라운드서비스를 올리도록 되어 있어 ANR 발생. (안 좋은 방식이기도 해서 이참에 손볼 예정)

* 임시로 앱이 실행중인 상태에서만 실행하도록 변경한 상태 

 jobschdule을 사용하여 처리하는 방법이 있는걸로 보이나, 업데이트 일자가 촉박하여 임시 패치.

관령 링크 - https://developer.android.com/about/versions/oreo/background?hl=ko


5. 기타 참고 사항 요약 정리

: FCM > GCM에서 생성된 Regstration ID로 푸시 메시지 전송 가능 

: 알림설정을 시스템에서 세분화하여 관리하도록 변경(알림채널 기능)

기존에 알림을 컨트롤 했다면, 이젠 불가능해짐.

API 26이상의 단말에서는 필수로 1개이상의 채널이 있어야 함.

: 퍼미션 Protection level검색 후  dangerous로 되어 있다면 유저로 부터 동의를 받아야함. 

: 백그라운드 서비스 정책변경 

앱이 시간 한도 내에 startForeground()를 호출하지 않으면 시스템이 서비스를 중단하고 이 앱을 ANR로 선언


알림채널 문서로 몇번을 봐도 이해가 잘 안됐는데.. 

직접구현하고 테스트해보니 그제야 개념이 좀 잡히네요.

실제 패치 시에는 Eclipse환경에서 Android Studio로 변경하는 작업에서 가장 애를 먹었는데, 

아직 Eclipse를 쓰신다면 이참에 변경해보세요!


저의 경우 기존에 Android Library Project 로 메인 소스를 구성하고, 

서브프로젝트에서 Import해서 하나의 소스로 앱을 다르게 구성하여 배포를 했는데, 

이번에 Android Studio로 변경하고 productFlavors라는 옵션을  사용하니

예전 보다 훨씬 간편하고 쉽게 구성할 수 있었네요.  


저처럼 패치는 해야겠고, 뭐부터 봐야할지 모르는 분들을 위해 한번 포스트해봤네요.

도움이 됐다면 아래 하트 한번 눌러주세요.!!

블로그 SEO(검색최적화) 정보 - 티스토리 블로그 SEO


블로그가 다른사이트에 검색이 잘되도록 검색엔진에 등록하는 방법에 대한 설명입니다.

우리나라 대표적인 포털 기준으로 간략하게 써봅니다. 


사이트별 검색엔진 등록사이트

1. 네이버 

https://webmastertool.naver.com/

2. 다음

https://register.search.daum.net/index.daum 

* 티스토리블로그는 따로 등록안해도 됩니다.

3. Bing 

https://www.bing.com/webmaster/

4. Google

https://www.google.com/webmasters/


사이트맵 생성 후 등록

https://www.xml-sitemaps.com/


적용 방법 (네이버, Tistory 블로그 기준)

1. https://webmastertool.naver.com/ 접속

- 사이트 추가에 등록할 사이트 주소 입력 후 추가선택


2. 태그선택후 빨간줄 표시된 부분 복사

3. 티스토리 블로그 관리자페이지 접속 후 스킨편집 선택 ( ***.tistory.com/manage )

- html 편집선택

- 2번에서 복사한 내용 추가 (meta라고 써있는 부분 근처에 넣으세요.) 후 저장

4. 추가 후 다음선택 하면 위와 같은 화면이 나타납니다.

여기서 사이트맵 제출 ( 사이트맵 생성방법은 아래 내용 참조 ) 



*사이트 맵 생성방법

1. https://www.xml-sitemaps.com/ 접속후 위의 칸에 해당 사이트 입력 후  Start선택.


- 시간이 꽤걸리고 끝나면 위와같은 화면이 나타남 > 해당 네모상자 선택 

 - 다운로드 클릭. sitemap.xml 로 저장되는데 이 파일을 블로그에 올려야합니다. 

2. 파일을 선택해서 1번에서 받은 사이트맵 파일을 등록합니다. 

이때 옆에 비공개를 선택하면 글이 노출되지 않게하면 좋습니다. 


3.  글등록 후 해당 글로 이동후 위와같이 우클릭을 하고, 링크주소 복사를 하고 각 검색엔진 사이트맵에 등록하면됩니다. 



도움이 됐다면 아래 하트 눌러주세요^^


Android SDK 다운로드 방법. (feat. Eclipse)



Eclipse 안드로이드 환경 설정 중  sdk다운로드를 받아야하는데 도무지 다운로드 경로가 안보이네요.

대략 1~2시간 정도 헤메다 어찌어찌 찾았습니다.


맥 : http://dl.google.com/android/android-sdk_r24.4.1-macosx.zip

윈도우 : http://dl.google.com/android/android-sdk_r24.4.1-windows.zip

우분투 : http://dl.google.com/android/android-sdk_r24.4.1-linux.tgz


그럼 도움이 됐길!


프로스펑크 후기(FROSTPUNK)

구매관련 링크http://www.frostpunkgame.com/ (정가 31,000원)

*아직 한글 정식 지원이 아니라 위 링크에 가서 싼곳에서 사면 됩니다.  
현시간기준으론 스팀이 가장 저렴(40시간 후 만료 - 7월 6일) 

유튜브에서 하는거보고 재미있을것 같아 
엊그제 11시쯤 시작해서 오늘 새벽3시에 엔딩을 봤네요.
총 플레이 시간은 10시간 정도 될것 같습니다;; 2틀연속 새벽 3시에 잤으니.. 

현시간 스팀 기준 4254건의 리뷰중 87%의 사람들이 긍정적으로 평가를 했네요. 

물론 저도 재미있게 해서 한번 해보시길 추천드리는거구요!  

위의 사진이 프로스트 펑크의 정체성을 잘 드러내주는 사진 같네요. 

심시티같은 게임인줄 알았는데 알고보니 생존게임...

처음 시작하면 인트로 화면이 나타나는데 스킵하지 말고 보시길. 

스토리와 배경, 음향 모두 띄어납니다.


빙하기가 도래해서 혹한속에 살아남는 게 주내용이고, 

플레이 시간이 흐를수록 온도가 점점 떨어지고 

난로같은 건물을 업그레이드를 해야만 살아남을 수 있습니다.

이와중에 중간중간사람들에 대한 민원도처리해야하고, 

특정 이슈에 대한 결정도 내려야하는데 게임속이지만 여러가지 고민하게 되더라구요.


이러한 요소들 때문에 게임을 여유(?)롭게 진행을 할 수 가 없는데

이 부분이 프로스트펑크의 가장 큰 재미인것 같네요.

흔한 말로 심장이 쫄깃하다고 하죠 ? 

정말 게임을 하면 할수록 점점 더 쫄깃해졌네요.

그래서 한번 시작하면 중간에 그만두기가 쉽지않았네요.

다른 분들도 게임꺼야지 하면서 시나리오 엔딩까지 보는분들이 여럿 있을 꺼라 예상합니다. ㅎㅎㅎ


총평.

- 사운드, 그래픽이 인상적

- 생존 게임에 맞게 쫄깃함을 느낄 수 있음

- 쫒기는거 좋아한다면 추천

- 후반쯤엔 업글이 다 돼서 게임이 루즈해지는 부분이 존재 

- 개인적으로 엔딩은 불만족... (정책본인이 선택한 결과를 토대로 엔딩이 나오는데 의도와 맞지않는 내용이 많네요)

- 끝으로, 고민 하지 말고 사세요.!!


시나리오(난이도:보통) 당 4~6시간 정도 걸리고 

19시이후에는 하지마세요!! ( 그래야 다음날 출근에 지장이 없어요 ㅎㅎㅎㅎ )

진짜 시간가는 줄 모르고 엔딩까지 봅니다.  

그럼 엔딩까지 달리세요!!