Showing posts with label Android. Show all posts
Showing posts with label Android. Show all posts

Wednesday, September 26, 2018

How to send Android push notification locally using ADB without need network connection

Requirements:
  • Device should be a rooted (simulator’s are rooted by default)
  • adbd should be started as root. (Rub command: adb root )
Now, send local push message using command:
adb shell am broadcast \
  -n com.your.app/com.google.firebase.iid.FirebaseInstanceIdReceiver \
  -a "com.google.android.c2dm.intent.RECEIVE" \
  --es "extra1" "65" \
  --es "guid" "1f400184-9215-479c-b19a-a9cd9a1d9dc9" \
  --es "extra3" "VALUE" \
  --es "extra4" "'Long string with spaces'"

What’s happening?

  • Simply, using adb we are broadcasting message with parameters.
  • adb shell am broadcast command that broadcasts.
  • -n parameter for define component (see IntentSpec@ADB Documentation)
  • We are broadcasting for com.google.firebase.iid.FirebaseInstanceIdReceiver, because we are using Firebase Messaging Service
  • We are sending action -a com.google.android.c2dm.intent.RECEIVE because FirebaseInstanceIdReceiver defines this in AndroidManifest.xml file.
    • Also, this is why we need to be root. This action requires Signature level permission.
  • We are adding extras with --es parameter.
Now, we can get data in onMessageReceived under the FirebaseMessagingService. When user taps notification remoteMessage.getData().get("extra1") should be return "65".

Related gist page:
https://gist.github.com/tolpp/45801406e13ed7c88fb768352bb39f9b