Ok wafrn people, it's story time.
A tale of the tech challenges I have been going through in the last weeks.
TL:DR I messed up when submitting my app to IzzyOnDroid. Now I have removed all google / firebase dependencies from the apks, built and published npm package to use Unified Push in modern Expo / React Native and found a way to reduce the app size to be 3x smaller by creating an apk for each architecture
So… A few weeks ago @IzzyOnDroid told a few tips about how to make my app (the wafrn mobile app) better for publishing on android alternative stores
Main pain point were the use of propietary services like Google Services and Firebase Cloud Messaging and also the apk size.
I was told about Unified Push, a library, a FOSS alternative to Google and Firebase services for sending notifications to android devices. After scraping the bottom of the barrel on github and npm found that there was not a person in earth who had tried and succeeded to integrate the Unified Push library with modern versions of Expo (using React Native new architecture), so that was my first challenge.
I had to create and publish a library so people could call the Unified Push Android library from their JS code in React Native. I had to learn modern android development with Kotlin. I had to set up a whole android development environment with all the Gradle stuff, the Java stuff and such.
I tried various VS Code plugins and Fleet from Jetbrians but in the end, the only one that worked well for me and could run my project was Android Studio.
After reading all the documentation for using unified push with Kotlin, I designed how the API surface of the library was going to look like. I wanted to make this abstraction the easiest possible one.
But there were more things to discover. To receive events from unified push in my JS code, I had to learn how to use the internal expo native APIs for android, so I read a lot of kotlin / java code written by the expo team.
After publishing my first version of the expo-unified-push integration I had to rollback to a previous attempt of bridging UP messages to JS because it broke hard with more complex JS code and later publish a third version because I did not get what an Android Intent was in the other previous two
Later came adapting the backend, which was not that hard, but I ran into some rocks there too.
With all this completed, and google / firebase dependencies removed my app was still heavy, at 150 MB.
So, with my newly found knowledge of being a native android developer, I start to tinker with graddle settings and graddle-expo integrations and I found that I was building an app for 4 architectures inside of one. When I split the apks, each to its own architecture, they now weighted between 40mb and 50mb
Now I have the first release published to github: github.com/juandjara/wafrn-rn/…
And the expo-unified-push integration published to NPM: npmjs.com/package/expo-unified…
It was a long journey, but we got there at the end
#Podria-haber-escrito-esto-en-español-con-toda-la-fantasia-que-le-he-metido-a-contar-esta-historia #pero-como-habla-de-tecnologia-queria-que-fuera-algo-un-poco-mas-internacional

IzzyOnDroid ✅
in reply to Bolet :neobread_eyes: :yeah_waffy: • • •Bolet :neobread_eyes: :yeah_waffy:
in reply to IzzyOnDroid ✅ • • •IzzyOnDroid ✅
in reply to Bolet :neobread_eyes: :yeah_waffy: • • •UnifiedPush
in reply to Bolet :neobread_eyes: :yeah_waffy: • • •Great ! A page dedicated to 3rd party libraries will be added in the coming week
BTW, you can open a pull request to add wafrn to [the list of applications](unifiedpush.org/users/apps/) supporting UP !
PS: we use to use UnifiedPush in one word, if you want to update the Readme
Apps using UnifiedPush
UnifiedPushIzzyOnDroid ✅
in reply to UnifiedPush • • •UnifiedPush
in reply to UnifiedPush • • •Implementations
UnifiedPushIzzyOnDroid ✅
in reply to UnifiedPush • • •F-Droid ($1896503) · Snippets · GitLab
GitLabS1m
in reply to IzzyOnDroid ✅ • • •IzzyOnDroid ✅
in reply to S1m • • •S1m
in reply to IzzyOnDroid ✅ • • •IzzyOnDroid ✅
in reply to S1m • • •Push Notifications · Wiki · IzzyOnDroid / repo · GitLab
GitLabS1m
in reply to IzzyOnDroid ✅ • • •Thanks :)
About: android.izzysoft.de/applists/c…
I've dropped support for Gotify-UP (the fork we started UnifiedPush with) and NoProvider2Push a while ago. I think it is better to remove them from the page. Maybe you can list Sunup instead, which is intended to be the goto solution.
PS: Is it possible to correct the heading from Unified Push to UnifiedPush ?
Push Clients/Manager - Android App Übersicht
IzzyOnDroidIzzyOnDroid ✅
in reply to S1m • • •Sunup is listed there, and the Gotify Distributor for UP (Gotify-UP) was removed from the list long ago (Gotify itself is still maintained, so their non-UP client is listed in the "others" section – with "others" meaning "non-UP").
I've seen that NoProvider2Push was not only marked experimental, but also has not received any commit for years. The Last-Update date reflects that. I'd rather leave it in as long as it's available, maybe someone would "take over" development…
And I thank you!
S1m
in reply to IzzyOnDroid ✅ • • •IzzyOnDroid ✅
in reply to S1m • • •S1m
in reply to IzzyOnDroid ✅ • • •Oh: I've just seen you linked the FOSS library for the embedded distrib to codeberg.org/UnifiedPush/andro…
But it has been deprecated in favor of the main one, which is fully foss: codeberg.org/UnifiedPush/andro…
android-embedded_fcm_distributor
Codeberg.orgIzzyOnDroid ✅
in reply to S1m • • •S1m
in reply to IzzyOnDroid ✅ • • •