hotchemi / Android-Rate

Android-Rate is a library to help you promote your android app by prompting users to rate the app after using it for a few days.
http://hotchemi.github.io/Android-Rate
MIT License
720 stars 216 forks source link

If setRemindInterval is set to 25 or more, the number of days is not set correctly #138

Open yuna-yano opened 6 years ago

yuna-yano commented 6 years ago

I'm sorry, my English is not good.

If "setRemindInterval" is set to 25 or more, the number of days is not set correctly. Looking at the point calculated using this value, it seems that the int is overflowing.

// it this "threshold" is "remindInterval".
    private static boolean isOverDate(long targetDate, int threshold) {
        return new Date().getTime() - targetDate >= threshold * 24 * 60 * 60 * 1000;
    }

Casting "threshold" to a long type solves the problem.

    private static boolean isOverDate(long targetDate, int threshold) {
        return new Date().getTime() - targetDate >= (long)threshold * 24 * 60 * 60 * 1000;
    }

I would like to send you a pull request, so thank you.


英語がうまくなくてすみません、日本語でもコメントさせていただきます。

setRemindIntervalの値を25日以上で設定すると、正しく日数が設定されません。 (25日で設定した場合、ボタンを押したにも関わらず毎回ダイアログが表示されるようになります)

設定値を使用している箇所をみると、引数thresholdがint型であり、その型のまま計算しているためintの最大値を超えて桁が溢れているようでした。 long型にキャストすることで正しく動作することを確認しました。

後ほどプルリクエストを送らせていただきたと思いますので、 どうぞよろしくお願いします。

hotchemi commented 6 years ago

Oh thx! Sorry I haven't maintained this repo for a while... 🙇 Let me check.

AlexanderLS commented 6 years ago

@yuna-yano Fixed in Releases 1.0.9+ https://github.com/Vorlonsoft/AndroidRate/