'내 애플리케이션 평가'에 대한 Android 접근 방식
Android 사용자에게 애플리케이션을 평가하도록 유도하는 모범 사례 접근 방식이 있습니까? Amazon.com 또는 Google Marketplace에서 얻을 수 있다는 점을 고려할 때 사용자가 투표 할 수있는 방식으로이를 처리하는 가장 좋은 방법은 무엇입니까?
Google Marketplace의 경우이 깔끔한 코드 스 니펫을 살펴보세요 . Amazon Appstore를 대신 또는 추가로 시작하도록 수정할 수 있다고 확신합니다.
편집 : 사이트가 URL 구조를 변경 한 것처럼 보이므로 위의 링크를 업데이트하여 지금 작동합니다. 다음은 사이트가 다시 다운 될 경우를 대비 한 Wayback Machine 의 오래된 사본 입니다. 추가 백업으로 아래 게시물의 주요 내용을 붙여 넣 겠지만 여전히 링크를 방문하여 댓글을 읽고 업데이트를받을 수 있습니다.
이 코드는 참여 사용자가 Android 마켓에서 앱을 평가하도록합니다 (iOS Appirater에서 영감을 얻음). 등급 대화 상자가 나타나기 전에 설치 후 일정 수의 앱 실행 및 일이 필요합니다.
조정 APP_TITLE
및 APP_PNAME
필요에. 또한 조정할해야 DAYS_UNTIL_PROMPT
하고 LAUNCHES_UNTIL_PROMPT
.
이를 테스트하고 대화 모양을 조정하려면 AppRater.showRateDialog(this, null)
활동에서 호출 할 수 있습니다 . 일반적인 사용은 AppRater.app_launched(this)
활동이 호출 될 때마다 호출하는 것입니다 (예 : onCreate 메소드 내에서). 모든 조건이 충족되면 대화 상자가 나타납니다.
public class AppRater {
private final static String APP_TITLE = "YOUR-APP-NAME";
private final static String APP_PNAME = "YOUR-PACKAGE-NAME";
private final static int DAYS_UNTIL_PROMPT = 3;
private final static int LAUNCHES_UNTIL_PROMPT = 7;
public static void app_launched(Context mContext) {
SharedPreferences prefs = mContext.getSharedPreferences("apprater", 0);
if (prefs.getBoolean("dontshowagain", false)) { return ; }
SharedPreferences.Editor editor = prefs.edit();
// Increment launch counter
long launch_count = prefs.getLong("launch_count", 0) + 1;
editor.putLong("launch_count", launch_count);
// Get date of first launch
Long date_firstLaunch = prefs.getLong("date_firstlaunch", 0);
if (date_firstLaunch == 0) {
date_firstLaunch = System.currentTimeMillis();
editor.putLong("date_firstlaunch", date_firstLaunch);
}
// Wait at least n days before opening dialog
if (launch_count >= LAUNCHES_UNTIL_PROMPT) {
if (System.currentTimeMillis() >= date_firstLaunch +
(DAYS_UNTIL_PROMPT * 24 * 60 * 60 * 1000)) {
showRateDialog(mContext, editor);
}
}
editor.commit();
}
public static void showRateDialog(final Context mContext, final SharedPreferences.Editor editor) {
final Dialog dialog = new Dialog(mContext);
dialog.setTitle("Rate " + APP_TITLE);
LinearLayout ll = new LinearLayout(mContext);
ll.setOrientation(LinearLayout.VERTICAL);
TextView tv = new TextView(mContext);
tv.setText("If you enjoy using " + APP_TITLE + ", please take a moment to rate it. Thanks for your support!");
tv.setWidth(240);
tv.setPadding(4, 0, 4, 10);
ll.addView(tv);
Button b1 = new Button(mContext);
b1.setText("Rate " + APP_TITLE);
b1.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
mContext.startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("market://details?id=" + APP_PNAME)));
dialog.dismiss();
}
});
ll.addView(b1);
Button b2 = new Button(mContext);
b2.setText("Remind me later");
b2.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
dialog.dismiss();
}
});
ll.addView(b2);
Button b3 = new Button(mContext);
b3.setText("No, thanks");
b3.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
if (editor != null) {
editor.putBoolean("dontshowagain", true);
editor.commit();
}
dialog.dismiss();
}
});
ll.addView(b3);
dialog.setContentView(ll);
dialog.show();
}
}
Uri uri = Uri.parse("market://details?id=" + context.getPackageName());
Intent goToMarket = new Intent(Intent.ACTION_VIEW, uri);
try {
context.startActivity(goToMarket);
} catch (ActivityNotFoundException e) {
UtilityClass.showAlertDialog(context, ERROR, "Couldn't launch the Google Playstore app", null, 0);
}
RateMeMaybe를 사용할 수도 있습니다 : https://github.com/Kopfgeldjaeger/RateMeMaybe
It gives you quite some options to configure (minimum of days/launches until first prompt, minimum of days/launches until each next prompt if user chooses "not now", dialog title, message etc.). It is also easy to use.
Example usage from README:
RateMeMaybe rmm = new RateMeMaybe(this);
rmm.setPromptMinimums(10, 14, 10, 30);
rmm.setDialogMessage("You really seem to like this app, "
+"since you have already used it %totalLaunchCount% times! "
+"It would be great if you took a moment to rate it.");
rmm.setDialogTitle("Rate this app");
rmm.setPositiveBtn("Yeeha!");
rmm.run();
Edit: If you want to only show the prompt manually, you can also just use the RateMeMaybeFragment
if (mActivity.getSupportFragmentManager().findFragmentByTag(
"rmmFragment") != null) {
// the dialog is already shown to the user
return;
}
RateMeMaybeFragment frag = new RateMeMaybeFragment();
frag.setData(getIcon(), getDialogTitle(), getDialogMessage(),
getPositiveBtn(), getNeutralBtn(), getNegativeBtn(), this);
frag.show(mActivity.getSupportFragmentManager(), "rmmFragment");
getIcon() can be replaced with 0 if you don't want to use one; the rest of the getX calls can be replaced with Strings
Changing the code to open the Amazon Marketplace should be easy
Maybe set up a Facebook link to a fan page with "like" options and so forth? An icon with a small label on the main menu would nicely sufficient and not as annoying, if at all, as a pop up reminder.
Just write these two lines of code under your "Rank this Apps" button and it will take you to the Google store where you have uploaded your app.
String myUrl ="https://play.google.com/store/apps/details?id=smartsilencer";
startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(myUrl)));
I think, redirecting users to your app's web page is the only solution here.
Play store policy says that if we notify users to perform some action in our app, then we must also let users cancel the operation if the user doesn’t want to perform that action. So if we ask users to update the app or rate the app on the Play store with Yes(Now), then we must also give an option for No(Later, Not Now), etc.
rateButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
r.showDefaultDialog();
}
});
where r is a class which contain showDefaultDialog method
public void showDefaultDialog() {
//Log.d(TAG, "Create default dialog.");
String title = "Enjoying Live Share Tips?";
String loveit = "Love it";
String likeit = "Like it";
String hateit = "Hate it";
new AlertDialog.Builder(hostActivity)
.setTitle(title)
.setIcon(R.drawable.ic_launcher)
//.setMessage(message)
.setPositiveButton(hateit, this)
.setNegativeButton(loveit, this)
.setNeutralButton(likeit, this)
.setOnCancelListener(this)
.setCancelable(true)
.create().show();
}
To download a full example[androidAone]:http://androidaone.com/11-2014/notify-users-rate-app-playstore/
for simple solution try this library https://github.com/kobakei/Android-RateThisApp
you can also change its configuration like criteria to show dialog , title , message
In any event :eg button
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setData
(Uri.parse("market://details?id="+context.getPackageName()));
startActivity(intent);
ReferenceURL : https://stackoverflow.com/questions/6482783/android-approach-for-rate-my-application
'IT박스' 카테고리의 다른 글
C # 구조체가 변경 불가능한 이유는 무엇입니까? (0) | 2021.01.06 |
---|---|
Ado.net-Size 속성의 크기가 0으로 잘못되었습니다. (0) | 2021.01.06 |
각 하위 요소에 대한 지연이있는 CSS 애니메이션 (0) | 2021.01.06 |
난수 목록을 생성하는 방법은 무엇입니까? (0) | 2021.01.06 |
디버그 출력 창에서 노이즈 메시지 비활성화-Visual Studio 2012 (0) | 2021.01.06 |