오늘은 난데없이 구글에서 메일이 하나 왔다. 헉~ 뭔가 ? 열어 보았더니, playstore 에 등록해 두었던 앱 하나가 삭제 되었다는 것이다.
이건 무슨 말인가 ? 앱이 삭제 되다니... 뭐 예전에도 몇개의 앱이 삭제 되었다는 메일을 받은 적이 있어서... ㅋ~ 그다지 놀랍지도 않지만, 이번에는 어떤 이유로 ? 그래서 메일을 첨부 이미지를 열어 보았더니. 두둥~
친절하기도 하여라... 앱을 실행했다가 종료하기 위해서 뒤로 가기 버튼을 클릭했을 때, 한번 클릭으로 앱이 종료 되는 것을 막기 위해서 두번 클릭 하라는 안내 문구를 보여 주면서 adsense 을 통해서 광고를 붙였는데, 흠... 그것이 Toast.LENGTH_LONG 을 설정해 두기는 했지만, 저렇게 앱이 종료된 이후에도 Custom Toast 메시지가 남아 있어서 구글에서는 그것을 일부러 저렇게 처리했다고 판단하는 것 같았다.
에구~... 집에 오자마자, 컴터를 켜고 수정을 했다.
package ......
import android.content.Context;
import android.content.SharedPreferences;
import android.util.Log;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.TextView;
import android.widget.Toast;
import androidx.annotation.NonNull;
import com.billcoreatech.boss0426.R;
import com.google.android.gms.ads.AdError;
import com.google.android.gms.ads.AdListener;
import com.google.android.gms.ads.AdRequest;
import com.google.android.gms.ads.AdView;
import com.google.android.gms.ads.LoadAdError;
import com.google.android.gms.ads.MobileAds;
import com.google.android.gms.ads.ResponseInfo;
/**
*
*/
public class KakaoToast {
static private AdView mAdView;
static String TAG = "KakaoToast";
static SharedPreferences option ;
public static Toast makeToast(Context context, String body, int duration){
LayoutInflater inflater;
inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View v = inflater.inflate(R.layout.view_toast, null);
TextView text = v.findViewById(R.id.message);
text.setText(body);
mAdView = v.findViewById(R.id.adView);
option = context.getSharedPreferences("option", context.MODE_PRIVATE);
MobileAds.initialize(context);
AdRequest adRequest = new AdRequest.Builder().build();
// 2021.09.27 구글에서 요청사항 반영.... 앱이 종료 되어도 광고가 노출 된다고...
if (duration == 9) {
mAdView.setVisibility(View.GONE);
duration = Toast.LENGTH_SHORT ;
} else {
mAdView.loadAd(adRequest);
mAdView.setVisibility(View.VISIBLE);
}
mAdView.setAdListener(new AdListener(){
@Override
public void onAdLoaded() {
super.onAdLoaded();
Log.e(TAG, "onAdLoaded");
}
@Override
public void onAdClosed() {
super.onAdClosed();
Log.e(TAG, "onAdClosed");
}
@Override
public void onAdOpened() {
Log.e(TAG, "onAdOpened");
}
@Override
public void onAdClicked() {
super.onAdClicked();
Log.e(TAG, "onAdClicked");
}
@Override
public void onAdImpression() {
super.onAdImpression();
Log.e(TAG, "onAdImpression");
}
@Override
public void onAdFailedToLoad(@NonNull LoadAdError error) {
super.onAdFailedToLoad(error);
String errorDomain = error.getDomain();
int errorCode = error.getCode();
String errorMessage = error.getMessage();
ResponseInfo responseInfo = error.getResponseInfo();
AdError cause = error.getCause();
Log.i(TAG,"------------------------------------");
Log.i(TAG, "error=" + error.toString());
Log.i(TAG, "errorDomain=" + errorDomain);
Log.i(TAG, "errorCode=" + errorCode);
Log.i(TAG, "errorMessage=" + errorMessage);
Log.i(TAG, "responseInfo=" + responseInfo.getResponseId());
Log.i(TAG, "responseInfo=" + responseInfo.getMediationAdapterClassName());
Log.i(TAG,"------------------------------------");
}
});
Toast toast = new Toast(context);
toast.setGravity(Gravity.CENTER_VERTICAL, 0, 0);
toast.setView(v);
toast.setDuration(duration);
return toast;
}
}
Custom Toast 을 호출할 때 duration 에 9을 전달하고 전달 받은 경우에만, mAdview 을 보여주지 않는 방식으로 ...
화면 layout 설계는 다음과 같이.
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:ads="http://schemas.android.com/apk/res-auto"
android:layout_width="300dp"
android:layout_height="400dp"
android:gravity="center"
android:orientation="vertical"
android:padding="10dp"
android:weightSum="4">
<TextView
android:id="@+id/message"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="2"
android:background="@drawable/background_text"
android:gravity="center"
android:text="@string/msgAdView"
android:textColor="@color/design_default_color_primary_dark"
android:textSize="24sp" />
<com.google.android.gms.ads.AdView
android:id="@+id/adView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="2"
ads:adSize="BANNER"
ads:adUnitId="@string/adUnitId" />
</LinearLayout>
디자인 모드에서 보면 ...
이렇게 Custom Toast 용 class 을 만들고 필요할 때 마다 호출해서 광고가 들어간 alert 을 발생 시킬 수 있게 구현 했는데...
KakaoToast.makeToast(getApplicationContext(), getString(R.string.msgBackPress), Toast.LENGTH_LONG).show();
activity에서 호출은 이런식으로 구현을 한다. 그렇게 하면 나만의 Toast 창이 사용되고, 그 안에 광고를 넣거나 하는 것도 쉽게 될 수 있다.
이렇게 해서 수정은 완성된 것 같다. 그래서 이제 다시 playstore 에 다시 등록을 요청 하였다.
사용자는 몇 안되는 앱 때문에 구글도 고생이 많다.
ㅋㅋㅋ
언제쯤 다시 앱이 게시 되었다는 메일을 받게될 것인가 ???
https://play.google.com/store/apps/details?id=com.billcoreatech.boss0426
아래는 이앱에 대한 간략한 설명... 그리고 또한 이 앱은 일본어, 영어, 베트남어 로 지원되도록 구현해 두었다.
https://billcorea.tistory.com/25
살아 돌아오길(?) 바라며... 링크를 걸어 본다.
'모바일 앱(안드로이드)' 카테고리의 다른 글
안드로이드 개발 onestore 등록해 보기 2일차 검증요청 완료 하기 (2) | 2021.10.07 |
---|---|
안드로이드 개발 onestore 에 앱 등록해 보기 ... (2) | 2021.10.06 |
안드로이드 앱 튕김 현상에 대한 확인 방법들 (0) | 2021.09.26 |
안드로이드 스튜디오 범블비 에서 Trust Gradle Project ??? (2) | 2021.09.21 |
안드로이드 스튜디오 에서 주석 처리 하고 싶으데... 이상한 문자만 나온다. (2) | 2021.09.21 |