원본출처: 티스토리 바로가기
오늘은 난데없이 구글에서 메일이 하나 왔다. 헉~ 뭔가 ? 열어 보았더니, 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
살아 돌아오길(?) 바라며... 링크를 걸어 본다.
댓글
댓글 쓰기