[HN Gopher] Ask HN: Robust and affordable alternatives to Google...
       ___________________________________________________________________
        
       Ask HN: Robust and affordable alternatives to Google Play for app
       distribution?
        
       TL;DR: I am looking for a platform to distribute my dissertation
       research data collection Android app to ~50 adult study
       participants in the US. The most important features are the ability
       to quickly and reliably deliver app updates over one year, safety,
       affordability, and good UX (participants are non-technical Android
       users). I don't want to use Google Play Store.  To give you some
       context, for my dissertation project, I need to collect data using
       a custom Android research app installed on participants' phones for
       one year. The app requires a lot of permissions and continuously
       collects a lot of data. My colleagues discouraged me from using
       Play Store because Google banned their apps for no good reason and
       with no recourse, even though their research was approved by
       research ethics and human subject protections committees (IRB).
       This jeopardized their federally-funded studies and caused issues
       with their findings.  For this reason, I would like to distribute
       my app to ~50 adult study participants in the US using a different
       platform.  Four features are especially important to me. First, app
       updates need to be delivered reliably and relatively quickly over
       one year. Second, there can be no spyware, excessive tracking,
       unnecessary notifications, nudges to download other apps, and no
       annoying ads. Third, affordability is important because I would be
       paying for the distribution from my personal student savings.
       Finally, I would prefer a platform with good app update UX for non-
       technical users, including older adults.  So far, I have looked
       into APK Mirror, but according to their policy [1],
       > If your app is new, doesn't have a proven track record, and not
       > unique, it will likely not be approved.            I have also
       tried F-Droid, but at least on my Pixel 2 XL, updates of some apps
       downloaded from F-Droid often fail to install.  Would you have any
       recommendations on what other platforms I could look into?  Thank
       you.  [1]:
       https://www.apkmirror.com/faq/#What_is_the_purpose_of_APKMir...
        
       Author : m_kos
       Score  : 38 points
       Date   : 2021-12-12 23:11 UTC (23 hours ago)
        
       | astlouis44 wrote:
       | Try the web.
        
       | itake wrote:
       | Couldn't you just add the adults as testers to the Google Play
       | app, avoiding oversight?
       | 
       | The problem with breaking off from Google Play is you lose the
       | ability to send push notifications.
       | 
       | You could look at Code Push [0] for seamless updates. TBH its not
       | the easiest to integrate with.
       | 
       | [0] - https://microsoft.github.io/code-push/
        
         | m_kos wrote:
         | Thanks for the suggestion!
         | 
         | I have looked into it and it seems that even internal testing
         | apps have to pass Play's content review [1]. I will check out
         | Code Push / App Center.
         | 
         | 1. https://stackoverflow.com/questions/64296562/google-play-
         | con...
        
       | binkHN wrote:
       | While I haven't tried it, does anyone know if Firebase can be
       | used to update apps that are not on the Google Play Store?
       | 
       | I know Firebase can handle app updates quite well and wonder if
       | this avenue might be an option.
        
       | dogma1138 wrote:
       | If you able / willing to enroll the devices in Intune you can use
       | Azure App Center to deploy and update Android apps without the
       | play store.
        
       | cthulberg wrote:
       | for a similar project, I have successfully used:
       | https://github.com/SimonMarquis/InternalAppStore
       | 
       | The Github page explains in detail how to set it up, and for the
       | described use case you should stay within the Firebase free tier
       | limit.
        
       | toast0 wrote:
       | Have you considered hosting the APK on your own website?
       | 
       | You would need to build your own update function, but it could be
       | a periodic fetch of a version file, and if the version is newer,
       | download the apk and when done prompt the user to upgrade,
       | opening the (already downloaded) apk in the system installer if
       | they agree. You might need to carefully select the location where
       | you download the apk, I don't know if you can install an APK with
       | the system installer from app specific storage or if it needs to
       | be in the 'external' storage. Relevant, ten year old, stack
       | overflow answer. [1]
       | 
       | Google does put some scary warnings when you install an APK
       | directly, but with 50 people, you can probably walk them through
       | that.
       | 
       | [1] https://stackoverflow.com/a/6085670
        
         | ignoramous wrote:
         | > _Have you considered hosting the APK on your own website? You
         | would need to build your own update function, but it could be a
         | periodic fetch of a version file, and if the version is newer,
         | download the apk and when done prompt the user to upgrade,
         | opening the (already downloaded) apk in the system installer if
         | they agree._
         | 
         | Apart from vending on F-Droid, this is what we do as our app is
         | pretty much under perennial threat of a PlayStore ban.
         | 
         | 1. We plonk the apk in a _not_ us-east-1 Lightsail Object Store
         | [0]. Smaller sized apks (if less than 25MB) can be instead
         | stored in Workers KV, which comes with a generous free-tier. Or
         | one can split larger apks (if less than 100MB) and join them in
         | a single buffer in Workers before sending out.
         | 
         | 2. Front it with Cloudflare Workers, and use their free-to-use
         | _Cache API_ [1] to avoid hitting the relatively expensive
         | Lightsail endpoint often.
         | 
         | 3. The app-update api-endpoint is also on Workers. Latest app
         | version-code is stored in a Workers env-variable. The origin
         | Lightsail path in a bucket is a _hash(versioncode+salt)_.
         | 
         | This setup costs less than $1/mo and we drive multiple TB
         | traffic, with only ~5GB hitting Lightsail.
         | 
         | Fly.io also has a neat CDN-esque solution for this [2], whilst
         | GitHub's also a viable alternative [3]
         | 
         | [0]
         | https://lightsail.aws.amazon.com/ls/docs/en_us/articles/buck...
         | 
         | [1] https://developers.cloudflare.com/workers/runtime-
         | apis/cache
         | 
         | [2] https://community.fly.io/t/first-look-static-asset-caching/
         | 
         | [3] https://docs.github.com/en/repositories/releasing-
         | projects-o...
        
       | tmp65535 wrote:
       | I have been distributing a pornographic Android app on the web
       | since 2017 and there are no difficulties.
       | 
       | Simply put the APK on a webpage and link to some instructions for
       | installing an untrusted APK. For example, see
       | http://driftwheeler.com
       | 
       | In particular, look at the "Can't install?" link.
       | 
       | If people really want to use your app, they will gladly do a
       | little work to install it.
        
       | thomas-moulard wrote:
       | If your concern is only around the possibility of being banned -
       | do you know if your colleagues were using the Play Store test
       | track[1]? I am not sure if their service agreement would allow
       | this, but apps in the test track do not require a review. It
       | supports up to 100 users and is fairly cheap (25 USD for the dev
       | account registration). I understand this is not what you're
       | asking for, but if you will be working with non-technical people,
       | this may be worth looking at it...
       | 
       | [1] https://developer.android.com/distribute/best-
       | practices/laun...
        
         | m_kos wrote:
         | Thanks! Are you sure the test track doesn't require a review?
         | Based on this comment [1], my impression was that it does, but
         | I can be wrong, of course.
         | 
         | 1. https://stackoverflow.com/questions/64296562/google-play-
         | con...
        
       | jlkuester7 wrote:
       | > my dissertation research data collection Android app
       | 
       | Does it have to be an actual Android app? Could it be packaged as
       | a progressive web app instead? If so, that might be the best way
       | to achieve what you are looking for. Participants can just follow
       | a link to your app's website which can prompt them to "Pin to
       | Home Screen". That gives them an "app-like" experience where you
       | can easily and quickly push updates without worrying about the
       | Play Store or other app distribution techniques.
        
       | commoner wrote:
       | > I have also tried F-Droid, but at least on my Pixel 2 XL,
       | updates of some apps downloaded from F-Droid often fail to
       | install.
       | 
       | I've never experienced this issue when the app was originally
       | downloaded from F-Droid (as opposed to apps downloaded from a
       | different source). Apps in the default F-Droid repository are
       | signed with F-Droid's signing key. Since apps signed with
       | different signing keys cannot be automatically updated without
       | manual uninstallation and reinstallation, apps in the default
       | F-Droid repository can only be updated through F-Droid if it was
       | originally installed via F-Droid.
       | 
       | Instead of using the default F-Droid repo, you can also set up
       | your own F-Droid repo on your own server. This allows you to
       | distribute the app through the F-Droid client, but signed with
       | your own key instead of F-Droid's key. You would also have
       | greater control over the release schedule, without needing to
       | wait for the F-Droid build bot to release updates.
       | 
       | Repomaker instructions:
       | https://www.f-droid.org/en/tutorials/create-repo/
       | 
       | Manual repo setup instructions:
       | https://f-droid.org/en/docs/Setup_an_F-Droid_App_Repo/
        
       | lrvick wrote:
       | F-Droid is your best bet. It is pretty much the only viable
       | alternative for those that wish to avoid Google services for
       | privacy.
        
       ___________________________________________________________________
       (page generated 2021-12-13 23:01 UTC)