기본 콘텐츠로 건너뛰기

3월, 2022의 게시물 표시

안드로이드 앱 만들기 : firebase 의 appcheck 는 뭘까 ?

원본출처: 티스토리 바로가기 https://firebase.google.com/docs/app-check/android/safetynet-provider?authuser=0&hl=ko     Android에서 SafetyNet으로 앱 확인 활성화  |  Firebase Documentation Join Firebase at Google I/O online May 11-12, 2022. Register now 이 페이지는 Cloud Translation API를 통해 번역되었습니다. Switch to English 의견 보내기 Android에서 SafetyNet으로 앱 확인 활성화 이 페이지에서는 내장 Saf firebase.google.com   앱을 만들면 당연히 데이터를 저장할 방법을 생각하게 되고, 그러다 보면 데이터를 여러사람이 같이 사용하는 걸 생각하게 된다.    서버를 가지고 있다면 고민할 이유가 없기도 하겠지만, 말이지... 서버가 없으니, online 으로 데이터를 저장할 수 있는 걸 생각 하지 않을 수 없다.  그래서 생각한 것은 firebase ... 그 안에서 realtime database 을 사용해서 이런 저런 앱을 만들다 보면...    firebase 규칙 이슈 메일   firebase 규칙 설정 가끔 메일 온다.  저장 규칙에 대한 이슈로...                           이렇게 규칙을 설정하면   등록된 사용자만 사용할 수 있도록 구성이 되어 있음에도 여러 사용자가 공유를 하게 되서 그런건가    규칙에 대한 보안 규칙을 말하는 메일이 오게 된다.       그래서 생각한 것은 app check 을 구현해 보는 것이라고 생각을 했다.  물론 이렇게 하는 게 맞는 건가는 아직 모른다. 일단 다른 생각이 나지 않으니 이렇게 구현해 보아야 겠다는 생각이 들었다.    구현한을 해 보자... 먼

안드로이드 앱 만들기 : 인앱 업데이트 는 어떻게 ?

원본출처: 티스토리 바로가기 오늘은 인앱 업데이트에 도전해 보자.   https://developer.android.com/guide/playcore/in-app-updates?hl=ko     인앱 업데이트  |  Android 개발자  |  Android Developers 인앱 업데이트 사용자는 기기에서 앱을 최신 상태로 유지하여 새로운 기능을 사용해 보고 성능 향상과 버그 수정을 통한 이점도 얻을 수 있습니다. 사용자 중에는 기기가 무제한 데이터에 연결 developer.android.com   앱을 만들어 게시를 하다보면 업데이트를 하게 되는 데, 내가 만든 앱의 사용자들이 업데이트를 잘 하고 있는 가에 대한 고민을 하게 된다.  그러나 사용자들은 그다지 업데이트에 관심이 없다.  자동으로 해 주면 좋은 거고, 아니면 말고, 혹시 android 설정에서 충전중 자동 업데이트를 설정해 두었다면 모르겠으나...   개발자 가이드의 설명은 AppUpdateManager 을 활용하는 방법에 대한 설명을 하고 있다. 이걸 보면서 그냥 따라하기를 해 보았다.   ... import android.app.Activity; import android.app.Application; import android.content.Context; import android.content.DialogInterface; import android.content.Intent; import android.content.IntentSender; import android.util.Log; import androidx.appcompat.app.AlertDialog; import com.google.android.play.core.appupdate.AppUpdateInfo; import com.google.android.play.core.appupdate.AppUpdateManager; import com.goog

안드로이드 앱 만들기. 카카오 API V2 로 이전

원본출처: 티스토리 바로가기 예전 부터 만들어 관리하던 앱이 있는데...  알림을 카카오톡을 보내주는 ... 카카오에서 api 을 upgrade 하고 있어서 나도 해 보기로 했다.   먼저 gradle 파일의 변화   변경전 implementation group: project.KAKAO_SDK_GROUP, name: 'usermgmt', version: project.KAKAO_SDK_VERSION implementation group: project.KAKAO_SDK_GROUP, name: 'kakaotalk', version: project.KAKAO_SDK_VERSION implementation group: project.KAKAO_SDK_GROUP, name: 'friends', version: project.KAKAO_SDK_VERSION 변경후 implementation "com.kakao.sdk:v2-user:2.9.0" // 카카오 로그인 implementation "com.kakao.sdk:v2-talk:2.9.0" // 친구, 메시지(카카오톡) implementation "com.kakao.sdk:v2-story:2.9.0" // 카카오스토리 implementation "com.kakao.sdk:v2-link:2.9.0" // 메시지(카카오링크) implementation "com.kakao.sdk:v2-navi:2.9.0" // 카카오내비   이제 로그인 시도해 보는 방법의 차이    변경전에는 제공된 login activity 을 이용해서 login 을 시도 하면 계정으로 로그인하는 것만을 지원했다면...  변경후에는    if (UserApiClient.getInstance().isKakaoTalkLoginAvailable(getAppli

안드로이드 앱 만들기 : 특정 앱으로 파일 공유 하기

원본출처: 티스토리 바로가기 이전에 posting 했던 pdf 공유 하기이 다음 이야기 정도가 될 것 같다.  요 몇일은 앱 수리를 하느라.. 좀  아무튼 이번에 작업하면서 찾아낸 것에 대해서 기억을 정리해 두어야 겠다.    이번에 하게 된 일은 pdf 을 만들어서 공유를 하는 것인데, 방법이 2가지 정도는 되는 것 같다.    첫번째는 이전 posting 에서 처럼 공유할 파일만 지정해서 ACTION_SEND 액션을 실행하는 방법이고, 이번에는 그것을 특정앱으로 한정해 보는 것이다.    public void sharePdf(String sPackageName) { File pdfFile = new File(getCacheDir(), "/" + fileName + ".pdf"); Uri contentUri = FileProvider.getUriForFile(getApplicationContext(), getApplicationContext().getPackageName()+".fileProvider", pdfFile); Intent shareIntent = new Intent(Intent.ACTION_SEND); shareIntent.setType("application/pdf"); shareIntent.putExtra(Intent.EXTRA_STREAM, contentUri); shareIntent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION); shareIntent.setPackage(sPackageName); if (getPackageList(sPackageName)) { shareIntent.setPackage(sPackageName); shareIntent.putExtra(Intent.EXTRA_SU

안드로이드 앱 만들기 : youtube 동영상 플레이...

원본출처: 티스토리 바로가기 https://github.com/PierfrancescoSoffritti/android-youtube-player   GitHub - PierfrancescoSoffritti/android-youtube-player: YouTube Player library for Android and Chromecast, stable and customizab YouTube Player library for Android and Chromecast, stable and customizable. - GitHub - PierfrancescoSoffritti/android-youtube-player: YouTube Player library for Android and Chromecast, stable and c... github.com  youtube 에 올라가 있는 동영상을 내 앱에서도 볼 수 있을까 하는 생각이 든다.  위 링크의 라이브러리를 이용하면 가능해 보인다.   도전 !   결과는 다음에... 이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다.

윈도우 바탕 화면 이야기 : 이런 모양도.

원본출처: 티스토리 바로가기 바탕화면 이미지   이런 이미지는 어떤 생각에서 만들어 내는 것일까 ?   식물인지 동물인지 야간은 애매한 이미지 이다.  늘 새로운 생각이 드는 건 맞는 데... 이걸 보면서 오늘은 또 어떤 생각이 들어야 하는 건지...   또 다른 시간이 오길 기다리며... 이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다.

안드로이드 앱 만들기 사전 출시 보고서 접근성에 대해서

원본출처: 티스토리 바로가기 앱을 만들다 보니 이런 일도 생긴다. 주 내용은 다름이 아니라  앱의 접근성에 관한 부분이다. 구글은 사용자가 편리하게 앱을 사용하게 될 수 있도록 하기 위해서  이기는 하겠지만 ,  개발자 입장에서는  아무래도 번거로운 일이 아닐까 싶다. 앱을 만들어 console 에 올리고 내부 테스트 버전을 적용하였더니,   한 두시간후에 메일와 와서 열어 보았더니, 아래 와 같은 출시 사전 보고서를 볼 수 있었다. 사전 출시 보고서 접근성과 관련 해서는  앱의 버튼 메뉴등을 만들어 달았는데,  그것들이 시각장애를 가지고 있는 친구들이 사용하기에 불편함이 없도록 하려면 그것들을 청각적인 요소로 들려 주어야 하는데, 그것을 알려 주어야 하는 것이다. 방법은 각 layout object 에 contentDesciption 을 설정해 주는 것이다.  앱의 구동되고 있는 동안에도 동적으로 그 설정을 지정할 수 있는 데, 그런때에는 setContentDescription 을 이용해서 설정을 해 주는 것이다. 그럼... 오늘은 여기 까지... 이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다.

안드로이드 앱 만들기 sendBroadcast 암시적 ? 명시적

원본출처: 티스토리 바로가기   https://developer.android.com/guide/components/broadcasts?hl=ko     브로드캐스트 개요  |  Android 개발자  |  Android Developers 브로드캐스트 개요 Android 앱은 Android 시스템 및 기타 Android 앱에서 게시-구독 디자인 패턴과 유사한 브로드캐스트 메시지를 받거나 보낼 수 있습니다. 관심 있는 이벤트가 발생할 때 이러한 브로 developer.android.com 앱을 만들다 보니 구글이 싫어하는 암시적 intent 설정에 대한 이슈가 있었다. 그래서 찾아보다 알게된 것... 특히 앱에서 broadcasting 을 하게 되면, 구글은 모든앱이 받는 이슈에 대해서 싫어 한다.    그래서 이제 부터는 모든 것을 명시적으로 선언해 주어야 만 하는 난관(?)에 봉착하게 된다.  앞으로는 개발하는 게 더 힘들어 질 것 같다. 흑~   Intent intent = new Intent();     intent.setAction("com.example.broadcast.MY_NOTIFICATION");     intent.putExtra("data","Notice me senpai!"); intent.setPackage(getApplicationPackageName());     sendBroadcast(intent); 앞으로는 이렇게 그냥 나의 앱 packageName 을 명시적으로 선언해 주는 습관을 드려야 할 것 같다.   playstore 에 앱을 게시하고자 올리면 테스트 단계를 거치는 데, 7~8 시간 대기가 필요하게 되므로... 시간 절약을 위해서.