AppRater (Bewertungsdialog) & AppNag (Kauf die Pro Version) Source Code

  • Antworten:10
sprucewerk
  • Forum-Beiträge: 26

07.06.2012, 16:32:26 via Website

Hallo zusammen,

haben eben in meine App "Pencil Touch Free" folgende Features reingepackt.


AppRater: Nach 2 Tagen und min. 3 maligen Benutzung bekommt der User ein PopUp
mit der Bitte um eine Bewertung im Market.

AppNag: Hierbei wird der Benutzer nach zwei Tagen mittels eines PopUps genervt, er solle doch
die Pro Version kaufen, weil sie viel toller und besser sei.

Den Source Code zum AppRater habe ich hier gefunden. Nach einer einfachen Modifikation ist AppNag entstanden.

Bin gespannt, welche Auswirkungen AppNag hat.
Werde das Resultat womöglich auf meinem Blog veröffentlichen.

http://sprucewerk.com/2012/06/07/perfektes-duo-fur-eine-freemium-app-apprater-appnag/

Schönen Gruß

— geändert am 07.06.2012, 16:33:21

Antworten
mindmApp
  • Forum-Beiträge: 12

07.11.2012, 19:27:59 via Website

Was passiert, wenn der User die App schon bewertet hat?

Antworten
Appsoluts
  • Forum-Beiträge: 304

23.12.2012, 17:10:46 via Website

Ich hab einfach kurz ne boolean pref "rated" hinzugefügt, die beim clicken des Button1 mit true commited wird.
Dem entsprechend in der if Abfrage das rated abgefragt !

Antworten
Daniel
  • Forum-Beiträge: 177

09.01.2013, 17:34:13 via Website

Ich habe den AppRater Code ein bisschen angepasst um folgende Probleme zu beheben:
- Dialog poppt auch dann auf wenn die App schon bewertet wurde
- Wenn Google Play nicht installiert ist stürzt die App ab. Das trifft z.B. auf das Kindle Fire von Amazon zu.
- Strings hardcoded

Die geänderte Version findet ihr in meinem Blog: gibts nicht mehr

— geändert am 25.03.2016, 18:24:08

Antworten
Rainer
  • Forum-Beiträge: 20

24.09.2013, 23:23:59 via Website

Hi,

ich wollte die Klasse mal ausprobieren habe allerdings ein Problem bei ausfühen. Ich wollte sie mit
1AppRater AppBew = new AppRater();
2 AppBew.app_launched(getApplicationContext());
starten, allerdings stürzt die App immer direkt beim Start ab. Ich glaube ich sehe gerade einfach den Wald vor lauter Bäumen nicht kann mir vll jemand kurz helfen?

Gruß

Antworten
impjor
  • Forum-Beiträge: 1.793

25.09.2013, 16:31:42 via App

Objektnamen schreibt man immer CamelCase. (also appBew) Klingt am Anfang vielleicht nicht wichtig, ist es aber wirklich.

Wenn deine App abstürzt poste bitte immer das LogCat. Wahrscheinlich kannst du deinen Fehler dann selbst erkennen.

VG

Liebe Grüße impjor.

Für ein gutes Miteinander: Unsere Regeln
Apps für jeden Einsatzzweck
Stellt eure App vor!

Antworten
Rainer
  • Forum-Beiträge: 20

25.09.2013, 19:47:24 via Website

Ok, danke schonmal für die Antwort. Also LogCat spuckt folgendes aus:

109-25 17:42:27.773: E/AndroidRuntime(776): FATAL EXCEPTION: main
209-25 17:42:27.773: E/AndroidRuntime(776): java.lang.RuntimeException: Unable to start activity ComponentInfo{de.androidapp.testapp/de.androidapp.testapp.RssReader}: android.content.res.Resources$NotFoundException: String resource ID #0x0
309-25 17:42:27.773: E/AndroidRuntime(776): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2180)
409-25 17:42:27.773: E/AndroidRuntime(776): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2230)
509-25 17:42:27.773: E/AndroidRuntime(776): at android.app.ActivityThread.access$600(ActivityThread.java:141)
609-25 17:42:27.773: E/AndroidRuntime(776): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1234)
709-25 17:42:27.773: E/AndroidRuntime(776): at android.os.Handler.dispatchMessage(Handler.java:99)
809-25 17:42:27.773: E/AndroidRuntime(776): at android.os.Looper.loop(Looper.java:137)
909-25 17:42:27.773: E/AndroidRuntime(776): at android.app.ActivityThread.main(ActivityThread.java:5041)
1009-25 17:42:27.773: E/AndroidRuntime(776): at java.lang.reflect.Method.invokeNative(Native Method)
1109-25 17:42:27.773: E/AndroidRuntime(776): at java.lang.reflect.Method.invoke(Method.java:511)
1209-25 17:42:27.773: E/AndroidRuntime(776): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
1309-25 17:42:27.773: E/AndroidRuntime(776): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
1409-25 17:42:27.773: E/AndroidRuntime(776): at dalvik.system.NativeStart.main(Native Method)
1509-25 17:42:27.773: E/AndroidRuntime(776): Caused by: android.content.res.Resources$NotFoundException: String resource ID #0x0
1609-25 17:42:27.773: E/AndroidRuntime(776): at android.content.res.Resources.getText(Resources.java:230)
1709-25 17:42:27.773: E/AndroidRuntime(776): at android.content.res.Resources.getString(Resources.java:314)
1809-25 17:42:27.773: E/AndroidRuntime(776): at de.androidapp.testapp.AppRater.showRateDialog(AppRater.java:64)
1909-25 17:42:27.773: E/AndroidRuntime(776): at de.androidapp.testapp.AppRater.app_launched(AppRater.java:48)
2009-25 17:42:27.773: E/AndroidRuntime(776): at de.androidapp.testapp.RssReader.onCreate(RssReader.java:42)
2109-25 17:42:27.773: E/AndroidRuntime(776): at android.app.Activity.performCreate(Activity.java:5104)
2209-25 17:42:27.773: E/AndroidRuntime(776): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1080)
2309-25 17:42:27.773: E/AndroidRuntime(776): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2144)

Gruß

P.s.: Ohne die Klasse funktioniert das Projekt ohne Fehler.

— geändert am 25.09.2013, 19:48:23

Antworten
impjor
  • Forum-Beiträge: 1.793

25.09.2013, 21:01:01 via App

Rainer
Ok, danke schonmal für die Antwort. Also LogCat spuckt folgendes aus:

109-25 17:42:27.773: E/AndroidRuntime(776): FATAL EXCEPTION: main
209-25 17:42:27.773: E/AndroidRuntime(776): java.lang.RuntimeException: Unable to start activity ComponentInfo{de.androidapp.testapp/de.androidapp.testapp.RssReader}: android.content.res.Resources$NotFoundException: String resource ID #0x0
309-25 17:42:27.773: E/AndroidRuntime(776): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2180)
409-25 17:42:27.773: E/AndroidRuntime(776): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2230)
509-25 17:42:27.773: E/AndroidRuntime(776): at android.app.ActivityThread.access$600(ActivityThread.java:141)
609-25 17:42:27.773: E/AndroidRuntime(776): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1234)
709-25 17:42:27.773: E/AndroidRuntime(776): at android.os.Handler.dispatchMessage(Handler.java:99)
809-25 17:42:27.773: E/AndroidRuntime(776): at android.os.Looper.loop(Looper.java:137)
909-25 17:42:27.773: E/AndroidRuntime(776): at android.app.ActivityThread.main(ActivityThread.java:5041)
1009-25 17:42:27.773: E/AndroidRuntime(776): at java.lang.reflect.Method.invokeNative(Native Method)
1109-25 17:42:27.773: E/AndroidRuntime(776): at java.lang.reflect.Method.invoke(Method.java:511)
1209-25 17:42:27.773: E/AndroidRuntime(776): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
1309-25 17:42:27.773: E/AndroidRuntime(776): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
1409-25 17:42:27.773: E/AndroidRuntime(776): at dalvik.system.NativeStart.main(Native Method)
1509-25 17:42:27.773: E/AndroidRuntime(776): Caused by: android.content.res.Resources$NotFoundException: String resource ID #0x0
1609-25 17:42:27.773: E/AndroidRuntime(776): at android.content.res.Resources.getText(Resources.java:230)
1709-25 17:42:27.773: E/AndroidRuntime(776): at android.content.res.Resources.getString(Resources.java:314)
1809-25 17:42:27.773: E/AndroidRuntime(776): at de.androidapp.testapp.AppRater.showRateDialog(AppRater.java:64)
1909-25 17:42:27.773: E/AndroidRuntime(776): at de.androidapp.testapp.AppRater.app_launched(AppRater.java:48)
2009-25 17:42:27.773: E/AndroidRuntime(776): at de.androidapp.testapp.RssReader.onCreate(RssReader.java:42)
2109-25 17:42:27.773: E/AndroidRuntime(776): at android.app.Activity.performCreate(Activity.java:5104)
2209-25 17:42:27.773: E/AndroidRuntime(776): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1080)
2309-25 17:42:27.773: E/AndroidRuntime(776): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2144)

Gruß

P.s.: Ohne die Klasse funktioniert das Projekt ohne Fehler.
Scheinbar fehlt eine Ressource für den AppRate-Dialog. Genau genommen fehlt eine String-Ressource.
LG

— geändert am 25.09.2013, 21:01:57

Liebe Grüße impjor.

Für ein gutes Miteinander: Unsere Regeln
Apps für jeden Einsatzzweck
Stellt eure App vor!

Antworten
Rainer
  • Forum-Beiträge: 20

25.09.2013, 22:48:46 via Website

Ok, dies ist die Zeile:

1tv.setText( mContext.getResources().getString(R.string.rate_txt1)+ APP_TITLE + mContext.getResources().getString(R.string.rate_txt2));

Genau wie im Snippet.. Die Strings sind alle angelegt deswegen verstehe ich nicht das der Fehler auftritt..

Antworten
Pascal P.
  • Admin
  • Forum-Beiträge: 11.286

12.11.2013, 20:53:52 via App

Nimm halt zum Testen mal HardCoded Strings, in denen genau das Gleiche steht.
Schon weisst du ob es an der Recource ligt.

LG Pascal //It's not a bug, it's a feature. :) ;)

Antworten
Gelöschter Account
  • Forum-Beiträge: 438

06.08.2015, 20:23:44 via Website

Auch wenn das Thema lange tot ist, stolpert vielleicht noch jemand - wie ich grad - hier rein.
Das Thema dürfte in ziemlich vielen Apps relevant sein, deshalb gibt es eine OpenSource Lösung (MIT Lizenz):
RateMeMaybe
(Ich bin nicht der Autor.)

Aktuelles Entwicklungsprojekt: (thinking) Sudoku Dojo Free (lightbulb)
Ich freue mich über Tester/innen.

Antworten