0

我想要一個片段,要求用戶在關閉應用程序時對其評分。該片段工作正常,但可能會煩人,特別是如果它出現在用戶關閉應用程序的前幾次。我希望他們在出現之前使用該應用程序,說5次。這怎麼可以用全球持有人來完成?如何限制不斷顯示的「評價此應用程序」片段

回答

0

這是我想出的解決方案。我敢肯定,每個人都會告訴我使用全局變量並不是最好的方法。但這對我有效。在我的主要活動,我把以下代碼:

@Override 
public void onBackPressed() { 
    int theCount = globalHolder.getCounter(); 
    globalHolder.setCounter(theCount++); 
    if (globalHolder.getStop() == 1) { 

     finish(); 
    } else if (theCount == 5 || theCount == 10 || theCount == 25) { 
     globalHolder.setCounter(theCount++); 
     final DialogFragment rate = new RateMe(); 
     rate.show(getSupportFragmentManager(), "Rate"); 
    } else { 
     globalHolder.setCounter(theCount++); 
     finish(); 
    } 
} 

現在,讓我解釋一下。第一個全球是一個計數器。我添加了這個,因爲我想跟蹤用戶使用應用程序的次數。你會在一分鐘內看到爲什麼。計數器初始化爲0.因此,由於用戶第一次訪問該程序,我會增加計數器。

下一行代碼被放入,這樣我就不會惹惱那些不想評價應用或者已經同意評價應用的用戶。這是你所能做的。你不能分辨他們是否真的給應用評分,但你可以確定他們是否按下了按鈕。所以我不得不假設,因爲他們按下了「是」按鈕,他們實際上評價了應用程序。現在我想停止顯示片段。所以我建立了另一個叫做......停止的全局。我把這個全局設置爲「0」(對於「否」)。是的,我用了一個int。那是我的選擇。你可以使用你想要的。所以當全局變爲「1」時,它會增加計數器,然後關閉程序。

'else if'是我設定我想要顯示片段時的限制。它設置爲僅在用戶第5次,第10次和第25次使用應用程序時顯示片段。如果他們沒有在第25次使用時對應用程序進行評分,他們很可能不會。從這一點開始,計數器再次遞增(您將會看到爲什麼會在後面出現),並且片段顯示在上面的計數中。

下一個'else'遞增計數器並關閉程序。

的片段是:

public class RateMe extends DialogFragment { 
@Override 
public Dialog onCreateDialog(Bundle savedInstanceState) { 

    final AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); 
    builder.setCancelable(false); 
    builder.setTitle("Rate Me"); 
    builder.setMessage(R.string.Rate); 
    builder.setPositiveButton("Yes, I Will", new DialogInterface.OnClickListener() { 
     @Override 
     public void onClick(DialogInterface dialog, int which) { 
      ((MainActivity)getActivity()).globalHolder.setStop(1); 
      Uri uri = Uri.parse("market://details?id=wolfEnterprisesLLC.motg&hl=en"); 
      Intent myAppLinkToMarket = new Intent(Intent.ACTION_VIEW, uri); 
      myAppLinkToMarket.addFlags(Intent.FLAG_ACTIVITY_NO_HISTORY | 
        Intent.FLAG_ACTIVITY_NEW_DOCUMENT | 
        Intent.FLAG_ACTIVITY_MULTIPLE_TASK); 
      try { 
       startActivity(myAppLinkToMarket); 
      } catch (ActivityNotFoundException e) { 
       Toast.makeText(getContext(), " unable to find market app", Toast.LENGTH_LONG).show(); 
      } 
     } 
    }); 
    builder.setNeutralButton("Please Do Not Ask Again", new DialogInterface.OnClickListener() { 
     @Override 
     public void onClick(DialogInterface dialog, int which) { 
      ((MainActivity)getActivity()).globalHolder.setStop(1); 
      getActivity().finish(); 
     } 
    }); 
    builder.setNegativeButton("Not Now", new DialogInterface.OnClickListener() { 
     @Override 
     public void onClick(DialogInterface dialog, int which) { 
      getActivity().finish(); 
     } 
    }); 
    return builder.create(); 
} 

}

  • 正面單擊全局命名爲 「停止」 設置爲 「1」。從這一點開始,用戶將被髮送到Play商店來爲應用評分。

  • 如果用戶不想再次詢問,可以推送的「中性」按鈕也將全局「停止」設置爲「1」。程序從這裏關閉。將全局設置爲「1」,再次阻止片段在未來出現。

  • 負號按鈕,即「不是現在」,關閉程序。回顧主要活動記得櫃檯?這就是爲什麼我要櫃檯繼續。因此,如果按下否定按鈕,它仍然會保持計數狀態,並在第10次和第25次再次詢問時根據需要對應用程序進行評分。

最後在我的應用程序類我說:

int stop; 
int counter; 

public int getStop() { 
    return stop; 
} 

public void setStop(int stop) { 
    this.stop = stop; 
} 

public int getCounter() { 
    return counter; 
} 

public void setCounter(int counter) { 
    this.counter = counter; 
} 

所以我幫這可以幫助別人。

:)

相關問題