So, I was able to get this done. It was pretty difficult, but not impossible. After finishing it, I have to say that I do NOT recommend doing this through python ----- for the most part, it's not possible.
I did this on both Android and iOS and in either case, if you don't write Java or modify main.m in Xcode, it's not worth your time.
From a high-level, these are the steps you have to go through:
Android:
1. First, you have to follow ALL the normal steps you would go through that a typical developer using Android Studio would go through. I can provide advise on the hoops I jumped through, but this is the hardest part. This includes creating the API project, getting your API key and project number, and then copying the classes from this example google project into your python-for-android project:
https://github.com/googlesamples/google-services/tree/master/android/gcm/app/src/main/java/gcm/play/android/samples/com/gcmquickstart . NOTE: Despite the fact that google recommends firebase, firebase still uses GCM on the backend. There's absolutely no need (yet) to use the Firebase SDK --- you can still use all the standard GCM examples and libraries.
2. Next, when you're actually ready to compile your buildozer project, you need the Jar files that provide Google Play Services and GCM: You have to fire up the Android SDK manager (located in ~/.buildozer) and add the "extras" respository URL to the SDK manager and then install the google play services SDK. (You can google all that stuff on how to do it).
3. The hardest part that I had to figure out was that once the Google Play services SDK is installed (version 9.6.1 as of this writing), you don't get Jars, you get "aar"'s --- Which is basically a zip file inside of a zip file. You will need to following files: a) play-services-gcm.jar b) play-services-iid.jar and c) play-services-basement.jar d) play-services.jar. These files are produced by extracting the "classes.jar" file from the respective "aar" archive format downloaded from the SDK.
Once you have those jars ^^^^ (all 4 of them, don't skip any), you can then link them in your
buildozer.spec and compile the application ----- it works perfectly.
So, if you've already made an app with push notifications before, you'll already understand #1 above ^^^^ ---- it's the part that involved grabbing the jar files and doing all of this without Gradle that threw me for a loop that I didn't understand.
The short answer is: Yes, it can be done without gradle.
iOS: Here's using the most recent kivy-ios toolchain makes this pretty easy:
1. Follow all the standard procedures for creating certificates and importing them into the apple member center and activating push notifications for your app. Google all that stuff.
2. Once you have the certificates installed, find the file "main.m" in the kivy-ios toolchain. You will then need to add the usual functions to that file to register your app with APNS and grab the token.
Really, for iOS it's that simple. HANDLING the token is an exercise left for the reader ---- when you get to that point, I would guess you would want to use python in both Android and iOS to handle
sending the tokens to your own respective push notification server/services. Once you have the token, you can switch back to python and be happy with all the python goodness that the excellent
kivy toolchains have provided for us.