Created
June 12, 2017 11:00
-
-
Save n1lesh/ca98f1011b708c896fd1c5c93226356f to your computer and use it in GitHub Desktop.
Sample Code for Push Notifications (FCM) on Android
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?xml version="1.0" encoding="utf-8"?> | |
<manifest xmlns:android="http://schemas.android.com/apk/res/android" | |
package="com.mynotificationsapp.android"> | |
<uses-permission android:name="android.permission.INTERNET" /> | |
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> | |
<application | |
android:allowBackup="true" | |
android:icon="@mipmap/ic_launcher" | |
android:label="@string/app_name" | |
android:roundIcon="@mipmap/ic_launcher_round" | |
android:supportsRtl="true" | |
android:theme="@style/AppTheme"> | |
<activity android:name=".MainActivity"> | |
<intent-filter> | |
<action android:name="android.intent.action.MAIN" /> | |
<category android:name="android.intent.category.LAUNCHER" /> | |
</intent-filter> | |
</activity> | |
<service android:name=".MessageReceiver"> | |
<intent-filter> | |
<action android:name="com.google.firebase.MESSAGING_EVENT" /> | |
</intent-filter> | |
</service> | |
<service android:name=".InstanceIdService"> | |
<intent-filter> | |
<action android:name="com.google.firebase.INSTANCE_ID_EVENT" /> | |
</intent-filter> | |
</service> | |
</application> | |
</manifest> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package com.mynotificationsapp.android; | |
import com.google.firebase.iid.FirebaseInstanceId; | |
import com.google.firebase.iid.FirebaseInstanceIdService; | |
import java.io.DataOutputStream; | |
import java.io.IOException; | |
import java.net.HttpURLConnection; | |
import java.net.MalformedURLException; | |
import java.net.URL; | |
/** | |
* Created by What's That Lambda on 11/6/17. | |
*/ | |
public class InstanceIdService extends FirebaseInstanceIdService { | |
public InstanceIdService() { | |
super(); | |
} | |
@Override | |
public void onTokenRefresh() { | |
super.onTokenRefresh(); | |
String token = FirebaseInstanceId.getInstance().getToken(); | |
//sends this token to the server | |
sendToServer(token); | |
} | |
private void sendToServer(String token) { | |
try { | |
URL url = new URL("https://www.whatsthatlambda.com/store"); | |
HttpURLConnection connection = (HttpURLConnection) url.openConnection(); | |
connection.setDoOutput(true); | |
connection.setDoInput(true); | |
connection.setRequestMethod("POST"); | |
DataOutputStream dos = new DataOutputStream(connection.getOutputStream()); | |
dos.writeBytes("token=" + token); | |
connection.connect(); | |
if (connection.getResponseCode() == HttpURLConnection.HTTP_OK) { | |
// Do whatever you want after the | |
// token is successfully stored on the server | |
} | |
} catch (MalformedURLException e) { | |
e.printStackTrace(); | |
} catch (IOException e) { | |
e.printStackTrace(); | |
} | |
} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package com.mynotificationsapp.android; | |
import android.app.Notification; | |
import android.app.NotificationManager; | |
import android.app.PendingIntent; | |
import android.content.Intent; | |
import android.support.v4.app.NotificationCompat; | |
import com.google.firebase.messaging.FirebaseMessagingService; | |
import com.google.firebase.messaging.RemoteMessage; | |
/** | |
* Created by What's That Lambda on 11/6/17. | |
*/ | |
public class MessageReceiver extends FirebaseMessagingService { | |
private static final int REQUEST_CODE = 1; | |
private static final int NOTIFICATION_ID = 6578; | |
public MessageReceiver() { | |
super(); | |
} | |
@Override | |
public void onMessageReceived(RemoteMessage remoteMessage) { | |
super.onMessageReceived(remoteMessage); | |
final String title = remoteMessage.getData().get("title"); | |
final String message = remoteMessage.getData().get("body"); | |
showNotifications(title, message); | |
} | |
private void showNotifications(String title, String msg) { | |
Intent i = new Intent(this, MainActivity.class); | |
PendingIntent pendingIntent = PendingIntent.getActivity(this, REQUEST_CODE, | |
i, PendingIntent.FLAG_UPDATE_CURRENT); | |
Notification notification = new NotificationCompat.Builder(this) | |
.setContentText(msg) | |
.setContentTitle(title) | |
.setContentIntent(pendingIntent) | |
.setSmallIcon(R.mipmap.ic_launcher_round) | |
.build(); | |
NotificationManager manager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE); | |
manager.notify(NOTIFICATION_ID, notification); | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment