Skip to content

afkredeem/afkredeem-flutter

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

80 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

AFK Redeem

Your AFK Arena redemption codes simplified



Google Play badge

Play Store badge



AFK Redeem screenshot

more screenshots at afkredeem.com

Why Share the Sources

The rationale behind sharing the sources is mainly transparency.
Getting notifications for new redemption codes is relatively easy and was done long before this app. There are other fan-apps notifying about redemption codes, some fan sites facilitate web notifications or email subscription, there's even an instagram account publishing new codes.

The difference with this app, however, on top of the notification capabilities, is the usage of Lilith Game's API for redeeming the codes (which honestly makes it A WHOLE LOT EASIER). The API is not officially supported by Lilith Games but several other community members have detected it and put it to good use.
In the end the notion of a 3rd party app redeeming codes is somewhat alarming for some users, and perhaps rightfully so. So the best move for mitigating those concerns was to publish the source code, and disclose how the app operates for any member of the community to review and confirm there's no monkey business 🙉🙈🙊.
That being said, in order to protect the app, the license for the sources provided in this repo is non-commercial Share-Alike.

Privacy Policy

What is Saved & Where

The app doesn't store any information outside the phone.
Moreover, the app also does not require local storage permissions.
Everything the app saves locally boils down to simple key value stores provided by either Android / iOS platforms (aka shared_preferences)

The only user-generated data saved on the phone is the user ID entered by the user on first startup.
Other than that the app saves its internal configuration (redeem api supported versions, codes list, etc.) and trivial UI flags (e.g. disclosure consent, hypogean/celestial mode or whether specific brutus messages were already shown).

What is sent & Where to

The app uses 2.5 network interfaces.

  • Downloading the current list of codes from afkredeem.com upon startup / refresh
    Receiving also in the same GET: general configuration such as redeemer api version support, brutus messages, etc.
    + a few server-side dialogs UI (plain html), e.g. about and redeem api versioning support updates.

    See afk_redeem_api.dart

  • Redeeming the codes using Lilith Games redemption codes REST API.
    The app sends the user ID and verifies the verification code, fetches user identity, and consumes any gift codes selected. The app uses in-memory cookies to maintain the session with Lilith Games API, however none of the cookies are stored. All of the above is sent directly and only to Lilith Games, while none of the byproducts are stored anywhere.

    See code_redeemer.dart

  • The app issues push notifications utilizing the Firebase Cloud Messaging solution (see below). This messaging framework uses platform-specific transport service (Android / iOS), facilitating notifications while saving the app the hassle of running any battery guzzling background workers.

Analytics & Crashlytics

The app uses Firebase Analytics and Firebase Crashlytics services.
As far as analytics go, only redeem & ad events are (anonymously) logged on top of the most basic default analytics firebase has to offer.
With regards to crashlytics, any error / crash the app experiences is anonymously reported via firebase.
Nevertheless, the app presents a disclosure dialog on first startup summarizing the above information with a link to this repo.

Push Notifications

The app uses Firebase Cloud Messaging solution to receive push notifications sent from the AFK Redeem account. The app maintainers will issue notifications (currently manually) only in the event of a new redemption codes. Since both Android & iOS provide means to silence / mute any app's notifications, such configuration setting is not implemented in the app.

Funds

Well, there aren't any really 😅 but you can buy me a ☕
Any imaginable expense (from the afkredeem.com domain, through app stores costs, to development time & effort), was personally paid for.
Which brings us to the next point.

Ads

An ad banner is displayed while the app is redeeming codes. Ads are configured to be non personalized and use a static keywords list (see consts.dart). The humble ads income helps covering the initial expenses mentioned above, maintenance of the app's services, as well as ongoing expenses (WTF apple). Moreover, if future funds will allow it perhaps an automated notification server can be implemented & deployed in aws or smth.

Community Engagement

The more the merrier

Contribute

Yes, please!
Feel free to send pull requests with features & fixes for the repo. Every once in a while a new release will be issued and uploaded to the stores.

Feature requests & Bug reports

Please refer to the issues section to review or submit any feature request or report any bug detected.


coffee  afkredeem.com  reddit  email

Disclosure

AFK Redeem is a fan-app and is not affiliated with Lilith Games in any way.