{"id":12311,"date":"2019-06-13T05:41:02","date_gmt":"2019-06-13T10:41:02","guid":{"rendered":"https:\/\/blog.mirrorfly.com\/?p=12311"},"modified":"2026-02-13T15:19:42","modified_gmt":"2026-02-13T09:49:42","slug":"push-notifications-service","status":"publish","type":"post","link":"https:\/\/www.mirrorfly.com\/blog\/push-notifications-service\/","title":{"rendered":"How to Integrate Push Notification into Your Existing Chat App?"},"content":{"rendered":"\n<p><strong>Planning to wake up your users to push notifications from your chat app? Join me in exploring more about the feature<\/strong>.<\/p>\n\n\n\n<p>People love to get a glimpse of what they are heading to, before reading the whole message &#8211; and <strong>Push notifications <\/strong>serve this right. Besides, from a developer\u2019s point of view, is it both convincing and exciting that the integration of this feature into apps can be done super-quick, especially when using a <strong>chat SDK with push notification<\/strong> support.<\/p>\n\n\n\n<p>In this article, I will introduce you to the ins and outs of push notifications along with the steps to implement them within your chat app.<\/p>\n\n\n\n<p>With less talking, and more into building, let&#8217;s get started!<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"What_are_Push_Notifications\"><\/span>What are Push Notifications?<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>Push notification is a clickable pop-up message that appears on the notification pane of the user&#8217;s device, even when they are not using their app. In a chat app, these notifications are primarily used to grab the user&#8217;s attention and prospects to take a specific call to action.<\/p>\n\n\n\n<p>Here\u2019s an example of what a push notification looks like in a chat app:<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mNkYAAAAAYAAjCB0C8AAAAASUVORK5CYII=\" data-src=\"https:\/\/www.mirrorfly.com\/blog\/wp-content\/uploads\/2024\/04\/fcm-push-notification-ios.webp\" alt=\"real-time-chat-notification\" class=\"wp-image-23257\"\/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Types_of_Push_Notifications\"><\/span>Types of Push Notifications<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>The functionality of chat SDK with push notifications is specific to each operating system. Based on the device they&#8217;ll run, push notifications can be classified as follows:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Mobile Push Notification<\/li>\n\n\n\n<li>Web Push Notification<\/li>\n<\/ol>\n\n\n\n\n\n<h3 class=\"wp-block-heading\">Mobile Push Notification<\/h3>\n\n\n\n<p>When a user receives an incoming message, the chat app triggers an alert to the user on the notification pane of the mobile device. This feature is referred to as Mobile Push Notifications.<\/p>\n\n\n\n<p>In general, mobile notifications are supported by both Android and iOS platforms. Each of these operating systems treats push notifications differently and users will have to look out for the following permissions on the respective platforms:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Notification Permissions<\/strong><\/li>\n<\/ul>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>iOS<\/strong>:<br>In Apple phones, push notifications are not available as a default setting. Rather he\/ she must get into the app settings and opt-in for it.<\/li>\n\n\n\n<li><strong>Android:<\/strong><br>By default, push notifications are enabled in Android devices. Users need to opt out of the push notification only by manually disabling it in the app&#8217;s notification settings<\/li>\n<\/ol>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Display of Messages:<\/strong><\/li>\n<\/ul>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>iOS:&nbsp;<\/strong>When a user receives a message, it pops up for a few seconds in the notification area and disappears automatically. It can still be accessed on the notification center.&nbsp;<\/li>\n\n\n\n<li><strong>Android<\/strong>: When a user receives a message, the message stays on the notification area until the user deliberately clears it off from the notification pane. Also, the user may choose what type of message notification can be displayed by selecting the options from the app&#8217;s settings.<\/li>\n<\/ol>\n\n\n\n<h3 class=\"wp-block-heading\">Web Push Notification<\/h3>\n\n\n\n<p>Web Push notifications are message alerts that slide across the desktop or mobile screen when the user logs into his\/ her web chat app.<\/p>\n\n\n\n<p>These notifications make it fairly easy to alert the users, without the need for an app to be installed on their desktops. Right when the user comes online with your chat app logged in on the browser, the notifications start popping up.<\/p>\n\n\n\n<div class=\"cta-wrapper-three\">\n<div class=\"left-wrap\">\n<img decoding=\"async\" src=\"https:\/\/www.mirrorfly.com\/blog\/wp-content\/uploads\/2024\/12\/cta-thumbnail-image.webp\" class=\"cta-three-thumbnail\">\n<\/div>\n<div class=\"right-wrap\">\n<summary class=\"heading\">Ready To Add <span class=\"highlight\">Chat API &#038; SDK <\/span> Into Any Web &#038; Mobile App?<\/summary>\n<ul class=\"cta-three-wrap\">\n<li> \n<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12.99\" height=\"12.99\" viewBox=\"0 0 12.99 12.99\">\n  <path id=\"arrow-down-circle\" d=\"M.812,6.495A5.683,5.683,0,1,1,6.5,12.178,5.683,5.683,0,0,1,.812,6.495Zm12.178,0A6.495,6.495,0,1,0,6.5,12.99,6.495,6.495,0,0,0,12.99,6.495ZM6.9,9.337a.406.406,0,0,1-.812,0v-4.7L4.347,6.376A.406.406,0,1,1,3.772,5.8L6.208,3.366a.406.406,0,0,1,.575,0L9.218,5.8a.406.406,0,1,1-.575.575L6.9,4.633Z\" transform=\"translate(12.99) rotate(90)\" fill=\"#ffcf18\" fill-rule=\"evenodd\"\/>\n<\/svg>\nComplete Source Code<\/li>\n<li> \n<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12.99\" height=\"12.99\" viewBox=\"0 0 12.99 12.99\">\n  <path id=\"arrow-down-circle\" d=\"M.812,6.495A5.683,5.683,0,1,1,6.5,12.178,5.683,5.683,0,0,1,.812,6.495Zm12.178,0A6.495,6.495,0,1,0,6.5,12.99,6.495,6.495,0,0,0,12.99,6.495ZM6.9,9.337a.406.406,0,0,1-.812,0v-4.7L4.347,6.376A.406.406,0,1,1,3.772,5.8L6.208,3.366a.406.406,0,0,1,.575,0L9.218,5.8a.406.406,0,1,1-.575.575L6.9,4.633Z\" transform=\"translate(12.99) rotate(90)\" fill=\"#ffcf18\" fill-rule=\"evenodd\"\/>\n<\/svg>\nLifetime Data Ownership<\/li>\n<li> \n<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12.99\" height=\"12.99\" viewBox=\"0 0 12.99 12.99\">\n  <path id=\"arrow-down-circle\" d=\"M.812,6.495A5.683,5.683,0,1,1,6.5,12.178,5.683,5.683,0,0,1,.812,6.495Zm12.178,0A6.495,6.495,0,1,0,6.5,12.99,6.495,6.495,0,0,0,12.99,6.495ZM6.9,9.337a.406.406,0,0,1-.812,0v-4.7L4.347,6.376A.406.406,0,1,1,3.772,5.8L6.208,3.366a.406.406,0,0,1,.575,0L9.218,5.8a.406.406,0,1,1-.575.575L6.9,4.633Z\" transform=\"translate(12.99) rotate(90)\" fill=\"#ffcf18\" fill-rule=\"evenodd\"\/>\n<\/svg>\nDeploy on Own Server<\/li>\n<\/ul>\n<div class=\"cta-btn-container\"><a href=\"https:\/\/www.mirrorfly.com\/request-demo.php\" class=\"cta--wrapper-button\">Request Demo<\/a><\/div>\n<\/div>\n<\/div>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"How_Do_Push_Notifications_Work_in_a_Chat_App\"><\/span>How Do Push Notifications Work in a Chat App?<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>Push notifications make it fairly easy to intimate users that they\u2019ve received a message in their chat app. In the context ahead, I\u2019ll explain the complete process of implementing push notifications in a messaging app. Let\u2019s start right here.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>The Operational Elements of Push Notifications<\/strong><\/h3>\n\n\n\n<p>The performance of Push notifications in a chat app depends on 3 major elements:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Operating System Push Notification Service (OSPNS):<\/strong>This acronym refers to the operating system ( iOS, Android and Windows) on which the push notifications function. Each OS displays the push notifications in its own style of service.<\/li>\n<\/ul>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Chat App Purpose<\/strong>: The design, display, and experience of your push notification solely depend on the type of chat app you develop. The message location and strategy will differ depending on the scenario where your chat app is used.<\/li>\n<\/ul>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>User\u2019s Technology:<\/strong> The user\u2019s app can be built on any OS and on any device. The type of message alerts uniquely differs from each other based on the technology used.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Steps_To_Add_Push_Notification_In_Chat_APP\"><\/span>Steps To Add Push Notification In Chat APP<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Step 1: Adding Push Notification to Your Chat App<\/strong><\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Add Push Notifications to your App<\/li>\n\n\n\n<li>Register with an OSPNS (Firebase for Android, Apple Push Notification Service for iOS)<\/li>\n\n\n\n<li>Your OSPNS provides an API to communicate with their service.<\/li>\n\n\n\n<li>Add the SDK to your app. The SDK is a library of codes with OSPNS services.<\/li>\n\n\n\n<li>Upload the app to the app store\/ play store<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Step 2: Activation of Push Notifications by Users<\/strong><\/h3>\n\n\n\n<p>Note: Your app and the user device are both registered with the OSPNS (APNs and FCM)<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>The user visits the app store, downloads your chat app and installs it.<\/li>\n\n\n\n<li>Your app identifies the user\u2019s device ID (token assigned by APNs and FCM)&nbsp;<\/li>\n\n\n\n<li>The MirrorFly SDKs register this to the FCM push notification service channel.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Step 3: Push Notification Delivery by the SDKs<\/strong><\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>MirrorFly inspects the push notification payload.<\/li>\n\n\n\n<li>When a specific payload is identified, it checks for devices that are registered on the channel.<\/li>\n\n\n\n<li>If the device is found, MirrorFly forwards the push to the specific service provider (FCM push notifications service\/Apple Push Notification service).<\/li>\n\n\n\n<li>Then, the FCM\/ APNs get the push notification to the respective Android\/ iOS devices.<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mNkYAAAAAYAAjCB0C8AAAAASUVORK5CYII=\" data-src=\"https:\/\/www.mirrorfly.com\/blog\/wp-content\/uploads\/2024\/04\/push-notification-server-design.webp\" alt=\"website-chat-push-notification\" class=\"wp-image-23259\"\/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"How_to_Add_Push_Notifications_into_Your_Chat_Apps_with_MirrorFly_SDKs\"><\/span>How to Add Push Notifications into Your Chat Apps with MirrorFly SDKs?<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>You can enable FCM Push notifications on any chat app by integrating MirrorFly&#8217;s <a href=\"https:\/\/www.mirrorfly.com\/enterprise-instant-messaging-software.php\">enterprise messaging software<\/a>, in simple steps.The implementation of the codes varies for each operating system. Below, I have explained the step-by-step process of adding push notification features to your Android and iOS apps in 2 consecutive parts.<\/p>\n\n\n\n<p>Let\u2019s begin the development process:<\/p>\n\n\n\n<p><strong>Part I<\/strong><\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Android Push Notifications<\/h3>\n\n\n\n<p>The first step of integrating push notifications in an Android device is to integrate Firebase and register for push notification service. In the below steps, I have used Java as the development language. You may also build the feature using other flexible languages like Kotlin.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>Integration of Firebase into a Chat Application<\/strong><\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Step 1:<\/strong> Go to Firebase Console<\/li>\n<\/ul>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Step 2:<\/strong> Create a New Project with app package name &nbsp;<code><strong>com.testapp<\/strong><\/code><\/li>\n<\/ul>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Step 3:<\/strong> Download the google-service.json file<\/li>\n<\/ul>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Step 4:<\/strong> In the app folder of your Android chat app project, add the google-service.json file<\/li>\n<\/ul>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Step 5:<\/strong> Add the firebase dependencies to <code><strong>build.gradle<\/strong><\/code> file of your project<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>buildscript {\n    repositories {\n        \/\/ Check that you have the following line (if not, add it):\n        google()  \/\/ Google's Maven repository\n   }\n   dependencies {\n       classpath 'com.google.gms:google-services:4.3.13' \/\/ google-services plugin\n   }\n}\n\nallprojects {\n   repositories {\n       \/\/ Check that you have the following line (if not, add it):\n       google() \/\/ Google's Maven repository\n   }\n}\n<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Step 6<\/strong>: Apply plugin for your android app and google play services as follows:<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>apply plugin: 'com.android.application'\napply plugin: 'com.google.gms.google-services'\n\ndependencies {\n  implementation platform('com.google.firebase:firebase-bom:30.3.1')\n}\n<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity is-style-default\"\/>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>Add of Firebase Push notification<\/strong><\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Step 1: <\/strong>In the app level of your <code>build.gradle<\/code> file, add the following FCM dependencies.<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>implementation 'com.google.firebase:firebase-messaging:23.0.6'<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Step 2:<\/strong> In the manifest file, add the following command<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;service android:name=\".MyFirebaseMessagingService\"\n         android:exported=\"false\"&gt;\n    &lt;intent-filter&gt;\n        &lt;action android:name=\"com.google.firebase.MESSAGING_EVENT\" \/&gt;\n    &lt;\/intent-filter&gt;\n&lt;\/service&gt;\n<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Step 3: <\/strong>To create the <code>FirebaseMessagingService <\/code>, create the <code>MyFirebaseMessagingService <\/code>file in the project folder of your app.<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>public class MyFirebaseMessagingService extends FirebaseMessagingService {\n    @Override\n    public void onMessageReceived(@NonNull RemoteMessage message) {\n        \/\/Push message will be received here when push notification triggered for this device\n    }\n\n    @Override\n    public void onNewToken(@NonNull String token) {\n         \/\/Whenever Device token will get updated\/changed this method will be triggered\n         PushNotificationManager.updateFcmToken(token, isSuccess, message) -&gt; {\n            \n                         });\n    }\n}\n<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Step 4: <\/strong>Use the below link to enable the FireBase Cloud Messaging\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/console.cloud.google.com\/apis\/library\/googlecloudmessaging.googleapis.com?pli=1\" target=\"_blank\" rel=\"noreferrer noopener nofollow\">Enable FCM push notifications<\/a><\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>Step 5: <\/strong>Go to Cloud Messaging Tab &gt; Project Settings &gt; Project Settings &gt; Copy the FCM API Key.<\/li>\n\n\n\n<li><strong>Step 6:<\/strong> In the chat server, configure the key to enable the reception of calls and messages from the Chat SDK.<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mNkYAAAAAYAAjCB0C8AAAAASUVORK5CYII=\" data-src=\"https:\/\/www.mirrorfly.com\/blog\/wp-content\/uploads\/2022\/09\/Fire-base.jpg\" alt=\"fcm-push-notification\" class=\"wp-image-23262\"\/><\/figure>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Step 7: <\/strong>Add the below permissions in the AndroidManifest.xml<\/li>\n<\/ul>\n\n\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-1 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:100%\">\n<pre class=\"wp-block-code\"><code>&lt;uses-permission \nandroid:name=\"android.permission.INTERNET\" \/&gt;\n&lt;uses-permission \nandroid:name=\"android.permission.ACCESS_NETWORK_STATE\" \/&gt;<\/code><\/pre>\n<\/div>\n<\/div>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Step 8: <\/strong>Add the device token to the cloud message console.<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity is-style-default\"\/>\n\n\n\n<h4 class=\"wp-block-heading has-medium-font-size\"><strong><strong>Integration of&nbsp; Firebase Crashlytics<\/strong><\/strong><\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Step 1: <\/strong>&nbsp;In the project-level <code>build.gradle<\/code>, add the Crashlytics as below:<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>dependencies {\n    \/\/ Check for v4.3.3 or higher\n    classpath 'com.google.gms:google-services:4.3.13'\n    classpath \"com.google.firebase:firebase-crashlytics-gradle:2.9.1\"\n}\n\nallprojects {\n    repositories {\n       \/\/ Add repository\n        google()  \/\/ Google's Maven repository\n    }\n}\n\n<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Step 2: <\/strong>Next, in the app-level<code> build.gradle<\/code>, add Crashlytics as shown below:<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>apply plugin: 'com.android.application'\napply plugin:  'com.google.firebase.crashlytics'\n\ndependencies {\n \/\/ Add dependency\n  implementation 'com.google.firebase:firebase-crashlytics:18.2.12'\n}<\/code><\/pre>\n\n\n\n<p><strong>Note:<\/strong> When Crashlytics is added to your application for the first time, it will take more than 12 hours to take effect on the Firebase Crashlytics UI<\/p>\n\n\n\n<h5 class=\"wp-block-heading\">4. Update the FCM push notification device token<\/h5>\n\n\n\n<p>To send push notifications, you need to update the FCM token to the server. Use the below command to perform this step:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>PushNotificationManager.updateFcmToken(FCM_TOKEN, isSuccess, message) -&gt; {\n            \n        });<\/code><\/pre>\n\n\n\n<h5 class=\"wp-block-heading\">5. Handling of the received FCM message<\/h5>\n\n\n\n<p>Once you receive a firebase push notification in the FCM service, you can easily identify the push notification for the SDK. Now, you can delegate it to the SDK as follows:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>  @Override\n    public void onMessageReceived(@NonNull RemoteMessage remoteMessage) {\n        super.onMessageReceived(remoteMessage);\n        Map&lt;String, String&gt; notificationData = remoteMessage.getData();\n        if (!notificationData.isEmpty() &amp;&amp; notificationData.containsKey(\"push_from\") &amp;&amp; notificationData.get(\"push_from\").equals(\"MirrorFly\"))  {\n            LogMessage.d(TAG, \"RemoteMessage:\" + notificationData.toString());\n            PushNotificationManager.handleReceivedMessage(notificationData, new NotificationEventListener() {\n                @Override\n                public void onMessageReceived() {\n\n                    List&lt;Message&gt; unseenMessagesForNotification = ChatManager.getLastNUnreadMessages(7);\n\n                    for (Message message: unseenMessagesForNotification) {\n                        String messageFrom = message.getChatUser();\n                        if (!ChatManager.isMuted(messageFrom)) {\n                            String senderName = ContactManager.getDisplayName(messageFrom);\n                            \/\/for profile pic and other info's of group\/user\n                             ProfileDetails profileDetails = ContactManager.getProfileDetails(messageFrom);\n                            String messageType = message.getMsgType();\n                           if (ChatType.TYPE_GROUP_CHAT.equals(message.getChatType())) {\n                                \/\/group chat sender user name\n                                String groupUser = ContactManager.getDisplayName(message.getGroupChatSender());\n                                \/\/for profile pic and other info's of group user\n                                ProfileDetails groupUserProfile = ContactManager.getProfileDetails(message.getGroupChatSender());\n                            }\n                            MessageDetail messageDetail = message.getMsgBody();\n                            \/\/ get message details from message object and build up your notification\n                        }\n                    }\n\n                }\n\n                @Override\n                public void onGroupNotification(@NotNull String groupJid, @NotNull String titleContent, @NotNull String messageContent) {\n                  \/* Create the notification for group creation with paramter values *\/\n                }\n\n                @Override\n                public void onCancelNotification() {\n                 \/\/ here you have to cancel notification\n                }\n            });\n        }\n        }\n<\/code><\/pre>\n\n\n\n<h5 class=\"wp-block-heading\">6. Get Unread Message Count<br>To acquire the count of unread messages without excluding the muted messages, use the below command:<\/h5>\n\n\n\n<pre class=\"wp-block-code\"><code>ChatManager.getUnreadMessageCountExceptMutedChat()<\/code><\/pre>\n\n\n\n<h5 class=\"wp-block-heading\">7. Last N Unread Message Count<\/h5>\n\n\n\n<p>Use the below method to return the last N unread messages from the SDK. This data can be used to create your own notification.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>ChatManager.getLastNUnreadMessages(COUNT);<\/code><\/pre>\n\n\n\n<h5 class=\"wp-block-heading\">8. Recent N Unread&nbsp; Group Message Count<\/h5>\n\n\n\n<p>Use the below method to return the count of recent N unread messages across chat groups.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Map&lt;String, List&lt;ChatMessage&gt;&gt; usersWithMessage = ChatManager.getNUnreadMessagesOfEachUsers(COUNT);<\/code><\/pre>\n\n\n\n<p><strong>Part II<\/strong><\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>iOS Push Notifications&nbsp;<\/strong><\/h3>\n\n\n\n<p>To receive messages while your app is running in the background or is in the killed state, you need to perform the following steps:<\/p>\n\n\n\n<p>Note: The below steps are constructed using programming Language &#8211; Swift<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Register for remote notification by conforming <code>UNUserNotificationCenterDelegate<\/code> in the <code>AppDelegate.<\/code><\/li>\n\n\n\n<li>When the APNS token gets updated, call the below method:<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>  \/\/ APNS Token Update\n    VOIPManager.sharedInstance.saveAPNSToken(token: token)\n    VOIPManager.sharedInstance.updateDeviceToken()\n<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Step 1:<\/strong> Enable App Group ID<\/li>\n<\/ul>\n\n\n\n<p>To access the user defaults and container database between your app and notification extension.&nbsp;<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Enable the app group&nbsp;<\/li>\n\n\n\n<li>In the <code>didReceive<\/code> method of the <code>UNNotificationServiceExtension<\/code> delegate, re-initialize the ChatSDK builder<\/li>\n<\/ul>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Step 2: <\/strong>Processing the Push Notification Request<\/li>\n<\/ul>\n\n\n\n<p>To process the request further, you need to perform the below step:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Go to the class that extends the <code>UNNotificationServiceExtension<\/code><\/li>\n\n\n\n<li>Validate whether the received payload is for the Chat or not.<\/li>\n<\/ul>\n\n\n\n<pre class=\"wp-block-code\"><code>NotificationMessageSupport.shared.didReceiveNotificationRequest(\"NOTIFICATION_CONTENT\", \"COMPLETION_BLOCK\")<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"How_MirrorFly_Handles_Bulk_Push_Notifications\"><\/span><strong>How MirrorFly Handles Bulk Push Notifications?<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>When handling bulk notifications, the <a href=\"https:\/\/www.mirrorfly.com\/blog\/why-chat-services-essential-for-business\/\" target=\"_blank\" rel=\"noreferrer noopener\">chat server<\/a> may face a common bottleneck of data overload. It may result in delayed response or sometimes, unresponsive service.&nbsp;<\/p>\n\n\n\n<p>MirrorFly adopts the following systems to handle these issues:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Message Queueing:<\/strong><\/li>\n<\/ul>\n\n\n\n<p>Whenever there is a data overload, this messaging architecture queues the push notifications and stores them until they get deleted. To perform this MirrorFly uses a messaging broker named <strong>RabbitMQ<\/strong>.&nbsp;<\/p>\n\n\n\n<p><br>In short, <strong>RabbitMQ<\/strong> is a<strong> <\/strong>messaging middleware that uses the AMQP protocol (Advanced Message Queuing Protocol) to implement the queueing of notifications. It reduces the load on the XMPP server, whenever there is a huge list of push notifications lined up to be delivered.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Exchange and Exchange Types<\/strong><\/li>\n<\/ul>\n\n\n\n<p>When messages are sent to Exchanges , they pick the messages and route it to the queues. These exchanges are AMQP 0-9-1 entities that support Direct, Fanout, Topic, and Headers exchanges using rules called bindings.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Binding Rules<\/strong><\/li>\n<\/ul>\n\n\n\n<p>The Queue Q has to be bound to Exchange E, if E needs to route messages to Q. In this process,&nbsp; the Exchange types use optional key attributes to filter the messages and route them to the respective queues.&nbsp;<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Conclusion\"><\/span><strong><strong>Conclusion<\/strong><\/strong><span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>It\u2019s a wrap!&nbsp;<\/p>\n\n\n\n<p>Coming to the closure, I\u2019d like to appreciate your persistence in learning more about push notifications with me along with the article.&nbsp;<\/p>\n\n\n\n<p>To give a quick recap, you learnt about what is a push alert notification, its types, the backend process of how to get push notifications on user devices, and its implementation steps.&nbsp;<\/p>\n\n\n\n<p>While this is adequately sufficient to build an interactive feature into your app, MirrorFly just doesn&#8217;t stop here. You can use MirrorFly SDKs to build call muting, archiving, presence indicators, and more.&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Planning to wake up your users to push notifications from your chat app? Join me in exploring more about the feature. People love to get a glimpse of what they are heading to, before reading the whole message &#8211; and Push notifications serve this right. Besides, from a developer\u2019s point of view, is it both [&hellip;]<\/p>\n","protected":false},"author":85,"featured_media":33313,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_stopmodifiedupdate":false,"_modified_date":"","footnotes":""},"categories":[1272],"tags":[2238,1328,1331],"class_list":["post-12311","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-tech-talks","tag-fcm-push-notification","tag-push-notification-in-android","tag-push-notification-ios"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v20.6 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Guide to Push Notification in Mobile &amp; Web<\/title>\n<meta name=\"description\" content=\"A push notification is a real-time message that pops up on a Web, iOS &amp; Android app. MirrorFly SDK Offers an FCM push notification.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.mirrorfly.com\/blog\/push-notifications-service\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Guide to Push Notification in Mobile &amp; Web\" \/>\n<meta property=\"og:description\" content=\"A push notification is a real-time message that pops up on a Web, iOS &amp; Android app. MirrorFly SDK Offers an FCM push notification.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.mirrorfly.com\/blog\/push-notifications-service\/\" \/>\n<meta property=\"og:site_name\" content=\"MirrorFly Blog - Chat API And Messaging SDK for your Mobile and Web Apps\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/MirrorFlyofficial\/\" \/>\n<meta property=\"article:published_time\" content=\"2019-06-13T10:41:02+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-02-13T09:49:42+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.mirrorfly.com\/blog\/wp-content\/uploads\/2019\/06\/mobile-push-notification.webp\" \/>\n\t<meta property=\"og:image:width\" content=\"1889\" \/>\n\t<meta property=\"og:image:height\" content=\"987\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/webp\" \/>\n<meta name=\"author\" content=\"Atchaya Jayabal\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Atchaya Jayabal\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"11 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.mirrorfly.com\/blog\/push-notifications-service\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.mirrorfly.com\/blog\/push-notifications-service\/\"},\"author\":{\"name\":\"Atchaya Jayabal\",\"@id\":\"https:\/\/www.mirrorfly.com\/blog\/#\/schema\/person\/27e1ae59b77c7775bd63034148eb3294\"},\"headline\":\"How to Integrate Push Notification into Your Existing Chat App?\",\"datePublished\":\"2019-06-13T10:41:02+00:00\",\"dateModified\":\"2026-02-13T09:49:42+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.mirrorfly.com\/blog\/push-notifications-service\/\"},\"wordCount\":1819,\"commentCount\":1,\"publisher\":{\"@id\":\"https:\/\/www.mirrorfly.com\/blog\/#organization\"},\"keywords\":[\"fcm push notification\",\"push notification in android\",\"push notification ios\"],\"articleSection\":[\"Tech Talks\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.mirrorfly.com\/blog\/push-notifications-service\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.mirrorfly.com\/blog\/push-notifications-service\/\",\"url\":\"https:\/\/www.mirrorfly.com\/blog\/push-notifications-service\/\",\"name\":\"Guide to Push Notification in Mobile & Web\",\"isPartOf\":{\"@id\":\"https:\/\/www.mirrorfly.com\/blog\/#website\"},\"datePublished\":\"2019-06-13T10:41:02+00:00\",\"dateModified\":\"2026-02-13T09:49:42+00:00\",\"description\":\"A push notification is a real-time message that pops up on a Web, iOS & Android app. MirrorFly SDK Offers an FCM push notification.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.mirrorfly.com\/blog\/push-notifications-service\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.mirrorfly.com\/blog\/push-notifications-service\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.mirrorfly.com\/blog\/push-notifications-service\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Blog\",\"item\":\"https:\/\/www.mirrorfly.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Tech Talks\",\"item\":\"https:\/\/www.mirrorfly.com\/blog\/category\/tech-talks\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"How to Integrate Push Notification into Your Existing Chat App?\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.mirrorfly.com\/blog\/#website\",\"url\":\"https:\/\/www.mirrorfly.com\/blog\/\",\"name\":\"MirrorFly Blog - Chat API And Messaging SDK for your Mobile and Web Apps\",\"description\":\"World&#039;s Most Scalable Chat APIs &amp; SDKs for Small, Medium &amp; Enterprises\",\"publisher\":{\"@id\":\"https:\/\/www.mirrorfly.com\/blog\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.mirrorfly.com\/blog\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.mirrorfly.com\/blog\/#organization\",\"name\":\"MirrorFly\",\"url\":\"https:\/\/www.mirrorfly.com\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.mirrorfly.com\/blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.mirrorfly.com\/blog\/wp-content\/uploads\/2020\/07\/mirrorfly-blue.png\",\"contentUrl\":\"https:\/\/www.mirrorfly.com\/blog\/wp-content\/uploads\/2020\/07\/mirrorfly-blue.png\",\"width\":520,\"height\":100,\"caption\":\"MirrorFly\"},\"image\":{\"@id\":\"https:\/\/www.mirrorfly.com\/blog\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/MirrorFlyofficial\/\",\"https:\/\/www.instagram.com\/mirrorflyofficial\/\",\"https:\/\/www.linkedin.com\/showcase\/mirrorfly-official\/\",\"https:\/\/x.com\/MirrorFlyTeam\/\",\"https:\/\/github.com\/mirrorfly\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.mirrorfly.com\/blog\/#\/schema\/person\/27e1ae59b77c7775bd63034148eb3294\",\"name\":\"Atchaya Jayabal\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.mirrorfly.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/c7684e399858444026b2603501ecba15?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/c7684e399858444026b2603501ecba15?s=96&d=mm&r=g\",\"caption\":\"Atchaya Jayabal\"},\"description\":\"Atchaya Jayabal leads Content at MirrorFly and is an expert in writing Tech, SaaS & B2B. She regularly publishes articles on CPaaS & Conversational AI in blogs.\",\"url\":\"https:\/\/www.mirrorfly.com\/blog\/author\/atchaya-jayabal\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Guide to Push Notification in Mobile & Web","description":"A push notification is a real-time message that pops up on a Web, iOS & Android app. MirrorFly SDK Offers an FCM push notification.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.mirrorfly.com\/blog\/push-notifications-service\/","og_locale":"en_US","og_type":"article","og_title":"Guide to Push Notification in Mobile & Web","og_description":"A push notification is a real-time message that pops up on a Web, iOS & Android app. MirrorFly SDK Offers an FCM push notification.","og_url":"https:\/\/www.mirrorfly.com\/blog\/push-notifications-service\/","og_site_name":"MirrorFly Blog - Chat API And Messaging SDK for your Mobile and Web Apps","article_publisher":"https:\/\/www.facebook.com\/MirrorFlyofficial\/","article_published_time":"2019-06-13T10:41:02+00:00","article_modified_time":"2026-02-13T09:49:42+00:00","og_image":[{"width":1889,"height":987,"url":"https:\/\/www.mirrorfly.com\/blog\/wp-content\/uploads\/2019\/06\/mobile-push-notification.webp","type":"image\/webp"}],"author":"Atchaya Jayabal","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Atchaya Jayabal","Est. reading time":"11 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.mirrorfly.com\/blog\/push-notifications-service\/#article","isPartOf":{"@id":"https:\/\/www.mirrorfly.com\/blog\/push-notifications-service\/"},"author":{"name":"Atchaya Jayabal","@id":"https:\/\/www.mirrorfly.com\/blog\/#\/schema\/person\/27e1ae59b77c7775bd63034148eb3294"},"headline":"How to Integrate Push Notification into Your Existing Chat App?","datePublished":"2019-06-13T10:41:02+00:00","dateModified":"2026-02-13T09:49:42+00:00","mainEntityOfPage":{"@id":"https:\/\/www.mirrorfly.com\/blog\/push-notifications-service\/"},"wordCount":1819,"commentCount":1,"publisher":{"@id":"https:\/\/www.mirrorfly.com\/blog\/#organization"},"keywords":["fcm push notification","push notification in android","push notification ios"],"articleSection":["Tech Talks"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.mirrorfly.com\/blog\/push-notifications-service\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.mirrorfly.com\/blog\/push-notifications-service\/","url":"https:\/\/www.mirrorfly.com\/blog\/push-notifications-service\/","name":"Guide to Push Notification in Mobile & Web","isPartOf":{"@id":"https:\/\/www.mirrorfly.com\/blog\/#website"},"datePublished":"2019-06-13T10:41:02+00:00","dateModified":"2026-02-13T09:49:42+00:00","description":"A push notification is a real-time message that pops up on a Web, iOS & Android app. MirrorFly SDK Offers an FCM push notification.","breadcrumb":{"@id":"https:\/\/www.mirrorfly.com\/blog\/push-notifications-service\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.mirrorfly.com\/blog\/push-notifications-service\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.mirrorfly.com\/blog\/push-notifications-service\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Blog","item":"https:\/\/www.mirrorfly.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Tech Talks","item":"https:\/\/www.mirrorfly.com\/blog\/category\/tech-talks\/"},{"@type":"ListItem","position":3,"name":"How to Integrate Push Notification into Your Existing Chat App?"}]},{"@type":"WebSite","@id":"https:\/\/www.mirrorfly.com\/blog\/#website","url":"https:\/\/www.mirrorfly.com\/blog\/","name":"MirrorFly Blog - Chat API And Messaging SDK for your Mobile and Web Apps","description":"World&#039;s Most Scalable Chat APIs &amp; SDKs for Small, Medium &amp; Enterprises","publisher":{"@id":"https:\/\/www.mirrorfly.com\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.mirrorfly.com\/blog\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.mirrorfly.com\/blog\/#organization","name":"MirrorFly","url":"https:\/\/www.mirrorfly.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.mirrorfly.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/www.mirrorfly.com\/blog\/wp-content\/uploads\/2020\/07\/mirrorfly-blue.png","contentUrl":"https:\/\/www.mirrorfly.com\/blog\/wp-content\/uploads\/2020\/07\/mirrorfly-blue.png","width":520,"height":100,"caption":"MirrorFly"},"image":{"@id":"https:\/\/www.mirrorfly.com\/blog\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/MirrorFlyofficial\/","https:\/\/www.instagram.com\/mirrorflyofficial\/","https:\/\/www.linkedin.com\/showcase\/mirrorfly-official\/","https:\/\/x.com\/MirrorFlyTeam\/","https:\/\/github.com\/mirrorfly"]},{"@type":"Person","@id":"https:\/\/www.mirrorfly.com\/blog\/#\/schema\/person\/27e1ae59b77c7775bd63034148eb3294","name":"Atchaya Jayabal","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.mirrorfly.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/c7684e399858444026b2603501ecba15?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/c7684e399858444026b2603501ecba15?s=96&d=mm&r=g","caption":"Atchaya Jayabal"},"description":"Atchaya Jayabal leads Content at MirrorFly and is an expert in writing Tech, SaaS & B2B. She regularly publishes articles on CPaaS & Conversational AI in blogs.","url":"https:\/\/www.mirrorfly.com\/blog\/author\/atchaya-jayabal\/"}]}},"_links":{"self":[{"href":"https:\/\/www.mirrorfly.com\/blog\/wp-json\/wp\/v2\/posts\/12311","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.mirrorfly.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.mirrorfly.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.mirrorfly.com\/blog\/wp-json\/wp\/v2\/users\/85"}],"replies":[{"embeddable":true,"href":"https:\/\/www.mirrorfly.com\/blog\/wp-json\/wp\/v2\/comments?post=12311"}],"version-history":[{"count":19,"href":"https:\/\/www.mirrorfly.com\/blog\/wp-json\/wp\/v2\/posts\/12311\/revisions"}],"predecessor-version":[{"id":43057,"href":"https:\/\/www.mirrorfly.com\/blog\/wp-json\/wp\/v2\/posts\/12311\/revisions\/43057"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.mirrorfly.com\/blog\/wp-json\/wp\/v2\/media\/33313"}],"wp:attachment":[{"href":"https:\/\/www.mirrorfly.com\/blog\/wp-json\/wp\/v2\/media?parent=12311"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.mirrorfly.com\/blog\/wp-json\/wp\/v2\/categories?post=12311"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.mirrorfly.com\/blog\/wp-json\/wp\/v2\/tags?post=12311"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}