Convert Website Into An Android App | #10 Set Up Push Notifications

 เคนเคฎ เค…เคชเคจे Application เคธे Push Notification เคญेเคœเคจा เคšाเคนเคคे เคนै เคคो เค‡เคธเค•े เคฒिเค  Firebase เค•े  Google Cloud Messaging Product เค•ा Use เค•เคฐेंเค—े।

เคคो เค‡เคธเค•े เคฒिเค เคธเคฌเคธे เคชเคนเคฒे เค†เคชเค•ो Firebase เคฎें sign in เคฏा เคซिเคฐ เค…เคชเคจा account เคฌเคจाเคจा เคชเฅœेเค—ा เค†เคช เค…เคชเคจा  Google Account เค•ा Use เค•เคฐเค•े เค†เคธाเคจी เคธे เคฌเคจा เคธเค•เคคे เคนै

1. Account เคฌเคจเคจे เค•े เคฌाเคฆ เค†เคชเค•ो Get Started เคฎें Click เค•เคฐเคจा เคนै-


2. เคซिเคฐ เค†เคชเค•ो Add Project เคฎें เคšเคฒे เคœाเคจा เคนै-


3. เคซिเคฐ เค…เคชเคจे Project เค•ा เคจाเคฎ เคกाเคฒिเคฏे เค‰เคธเค•े เคฌाเคฆ Continue เคฎें Click เค•ीเคœिเคฏे-


4. เคซिเคฐ เคธे เค†เคชเค•ो Continue เคฎें Click เค•เคฐเคจा เคนै -


5. เคซिเคฐ เคนो เคธเค•เคคा เคนै เค†เคชเค•े เคฎें Country select เค•เคฐเคจे เค•ा option เค†เคเค—ा เคคो เค•เคฐ เคฒीเคœिเคฏे เคฎेเคฐे เคฎें เคจเคนीं เค†เคฏा เคนै เค‰เคธเค•े เคฌाเคฆ Firebase account select เค•เคฐเคจे เค•ा option เคฎिเคฒेเค—ा เค‰เคธเค•ो select เค•เคฐเค•े Create project เคฎें Click เค•ीเคœिเคฏे।



6. เคซिเคฐ เค†เคชเค•ो Android เค•े Icon เคชเคฐ click เค•เคฐเคจा เคนै-



7.  เคซिเคฐ เค†เคชเค•ो App เค•ा Package Name เคกाเคฒเคจा เคนै เค†เคช Package name Android Studio เคธे เคฆेเค– เคธเค•เคคे เคนै เคซिเคฐ เค†เคชเค•ो เค…เคชเคจे App เค•ा เคเค• Nick Name เคกाเคฒเคจा เคนै เค‰เคธเค•े เคฌाเคฆ เค†เคชเค•ो Register App เคฎें click เค•เคฐเคจा เคนै-



8. เคซिเคฐ เค†เคชเค•ो เคจिเคšे เคฆिเค–ाเค เค—เค Option เคธे File เค•ो Download เค•เคฐ เคฒेเคจा เคนै เคซिเคฐ Next เคชเคฐ  Click เค•ीเคœिเคฏे-


9.  เค‰เคธเค•े เคฌाเคฆ เค†เคชเค•ो Android Studio เคฎें เคœाเคจा เคนै เคซिเคฐ เคจिเคšे Image เคฎें เคฆिเค–ाเค เค…เคจुเคธाเคฐ Dropdown เคฎें เคธे Project เค•ो Select เค•เคฐเคจा เคนै-


10.  เคซिเคฐ เค†เคชเค•ो เค…เคชเคจे Package name เค•ो Open เค•เคฐเคจा เคนै เค‰เคธเค•े เคฌाเคฆ App เคฎें Mouse เค•ो เคฒेเคœाเค•เคฐ Right click เค•เคฐเคจा เคนै เค‰เคธเค•े เคฌाเคฆ Show In explorer เคฎें เคšเคฒे เคœाเคจा เคนै-



11. เคซिเคฐ เค†เคชเค•ो App folder เค•े เค…ंเคฆเคฐ เคœाเคจा เคนै เค”เคฐ เคœो File Firebase เคธे download เค•िเคฏे เคฅे เค‰เคธเค•ो App folder เค•े เค…ंเคฆเคฐ Paste เค•เคฐ เคฆेเคจा เคนै-


12.  เค…เคฌ เค†เคช file explorer เค•ो close เค•เคฐ เคธเค•เคคे เคนै


13. เคซिเคฐ เค†เคชเค•ो Firebase เคฎें เคœाเคจा เคนै เค”เคฐ เคจिเคšे เคฆिเค–ाเค เค—เค code เค•ो Copy เค•เคฐ เคฒेเคจा เคนै, เค‰เคธเค•े เคฌाเคฆ เค†เคชเค•ो Android Studio เคฎें เคœाเคจा เคนै เคซिเคฐ เคจिเคšे Image เคฎें เคฆिเค–ाเค เค…เคจुเคธाเคฐ Gradle เค•े เค…ंเคฆเคฐ build.gradle เคฎें Double Click เค•เคฐ เคฒेเคจा เคนै-





14. Firebase เคธे เคœो code copy เค•िเคฏे เคฅे เค‰เคธเค•ो build.gradle เคฎें image เคฎें เคฆिเค–ाเค เค—เค เคธ्เคฅाเคจ เคชเคฐ past เค•เคฐ เคฒेเคจा เคนै-



15. เคซिเคฐ app เค•े เค…ंเคฆเคฐ build.gradle เคฎें เคœा เค•เคฐ เค†เคชเค•ो double click เค•เคฐเคจा เคนै เคจिเคšे Image เคฎें เคญी เคฆिเค–ाเคฏा เค—เคฏा เคนै-



16. เคซिเคฐ เค†เคชเค•ो เคจिเคšे เคฆिเค เค—เค Code เค•ो Image เคฎें เคฆिเค–ाเค เคนुเค เคธ्เคฅाเคจ เคชเคฐ Paste เค•เคฐเคจा เคนै (Code เคฎें เคฆिเคฏा เค—เคฏा version เค†เคชเค•ो update เค•เคฐเคจा เคชเฅœ เคธเค•เคคा เคนै, เค‡เคธเค•े เคฒिเค เคŠเคชเคฐ เคฆिเคฏा เค—เคฏा video เคฆेเค–िเคฏे)-
implementation platform('com.google.firebase:firebase-bom:26.1.0')
implementation 'com.google.firebase:firebase-analytics'
implementation 'com.google.firebase:firebase-messaging:21.0.0'


เคจिเคšे เคฆिเค เคนुเค code เค•ो เค‡เคธी code เค•े เคจिเคšे เคฎें Image เคฎें เคฆिเค–ाเค เคนुเค เคธ्เคฅाเคจ เคชเคฐ เคซाเคฏเคฐ เคธे Paste เค•ीเคœिเคฏे-
apply plugin: 'com.google.gms.google-services'

เคซिเคฐ เค†เคชเค•ो เค…เคชเคจे android studio เค•ो Interner เคธे connect เค•เคฐเค•े เคจिเคšे Image เคฎें เคฆिเค–ाเค เค…เคจुเคธाเคฐ Sync Now เคฎें Click เค•เคฐเคจा เคนै เค”เคฐ เคฅोเฅœा wait เค•เคฐเคจा เคนै เคœเคฌ เคคเค• sync เคจเคนीं เคนो เคœाเคคा เคนै-



17.  เค…เคฌ เค†เคชเค•ो Firebase เคฎें เคœाเคจा เคนै เค”เคฐ Next เคฎें Click เค•เคฐเคจा เคนै, เค‰เคธเค•े เคฌाเคฆ Continue to the console เคฎें click เค•เคฐ เคฒेเคจा เคนै-





18.  เค…เคฌ เค†เคชเค•ो เคฆो New java class เคฌเคจाเคจा เคนै เคคो เค‰เคธเค•े เคฒिเค เคนเคฎ เคซिเคฐ เคธे project dropdown เคฎें เคธे Android เคฎें เคšเคฒे เคœाเคฏेंเค—े-



19.  เคซिเคฐ เค†เคชเค•ो app > java > domain เคฎें เคœाเคจा เคนै เคœिเคธเคฎे เค†เคชเค•ा MainActivity.java เคนै, เค‰เคธ Folder เคฎें เคœा เค•เคฐ เค†เคชเค•ो Right Click เค•เคฐเคจा เคนै, เคซिเคฐ New เคฎें เคœा เค•เคฐ java class เคฎें click เค•เคฐเคจा เคนै-



เค‰เคธเค•े เคฌाเคฆ เค†เคชเค•ो MyFirebaseMessagingService เคจाเคฎ เคธे java Class create เค•เคฐเคจा เคนै, เคซिเคฐ Enter เคฎें Click เค•เคฐเคจा เคนै-




20. เค‰เคธเค•े เคฌाเคฆ เคฆिเค เค—เค code เค•ो Image เคฎें เคฆिเค–ाเค เคนुเค เคธ्เคฅाเคจ เคชเคฐ Paste เค•เคฐ เคฆीเคœिเคฏे เค”เคฐ เค…เค—เคฐ class import เค•เคฐเคจे เค•े เคฒिเค Error เค†เคคा เคนै เคคो class import เค•เคฐ เคฒीเคœिเคฏे-
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.content.Context;
import android.content.Intent;

import androidx.core.app.NotificationCompat;
import androidx.localbroadcastmanager.content.LocalBroadcastManager;

import com.google.firebase.messaging.FirebaseMessagingService;
import com.google.firebase.messaging.RemoteMessage;

public class MyFirebaseMessagingService extends FirebaseMessagingService {
@Override
public void onMessageReceived(RemoteMessage remoteMessage) {
Intent intent = new Intent(this, MainActivity.class);

intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
PendingIntent pendingIntent = PendingIntent.getActivity(this,0,intent,PendingIntent.FLAG_ONE_SHOT);
NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(this);
notificationBuilder.setContentTitle("FCM NOTIFICATION");
notificationBuilder.setContentText(remoteMessage.getNotification().getBody());
notificationBuilder.setAutoCancel(true);
notificationBuilder.setSmallIcon(R.mipmap.ic_launcher);
notificationBuilder.setContentIntent(pendingIntent);
NotificationManager notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
notificationManager.notify(0,notificationBuilder.build());

//Change URL section
String url = remoteMessage.getData().get("url"); //url is the key to be used in firebase for data
intent.putExtra("url",url);
LocalBroadcastManager localBroadcastManager = LocalBroadcastManager.getInstance(this);
localBroadcastManager.sendBroadcast(intent);

}
}




21. เค…เคฌ เค†เคชเค•ो เคซिเคฐ เคธे เคชเคนเคฒे เค•ी เคคเคฐเคน เคนी เคเค• เค”เคฐ Java Class เคฌเคจाเคจा เคนै เคฒेเค•िเคจ เค‡เคธ เคฌाเคฐ MyFireBaseInstanceIDService เคจाเคฎ เคธे เคฌเคจाเคจा เคนै-


เค‰เคธเค•े เคฌाเคฆ MyFireBaseInstanceIDService class เคฎें เคจिเคšे เคฆिเค เค—เค code เค•ो Image เคฎें เคฆिเค–ाเค เค—เค เคธ्เคฅाเคจ เคชเคฐ Paste เค•เคฐ เคฒीเคœिเคฏे-
import android.util.Log;

import com.google.firebase.iid.FirebaseInstanceId;
import com.google.firebase.iid.FirebaseInstanceIdService;

public class MyFireBaseInstanceIDService extends FirebaseInstanceIdService {

private static final String REG_TOKEN = "REG_TOKEN";
@Override
public void onTokenRefresh() {
String recent_token = FirebaseInstanceId.getInstance().getToken();

Log.d(REG_TOKEN,recent_token);
}
}


22. เค‰เคธเค•े เคฌाเคฆ เค†เคชเค•ो Android Manifest (app > manifests > AndroidManifest.xml) เคฎें เคœाเคจा เคนै เค”เคฐ เคจिเคšे เคฆिเค เค—เค Code เค•ो image เคฎें เคฆिเค–ाเค เค—เค เคธ्เคฅाเคจ เคชเคฐ Paste เค•เคฐเคจा เคนै-
<service android:name=".MyFireBaseInstanceIDService">
<intent-filter>
<action android:name="com.google.firebase.INSTANCE_ID_EVENT"></action>
</intent-filter>
</service>
<service android:name=".MyFirebaseMessagingService">
<intent-filter>
<action android:name="com.google.firebase.MESSAGING_EVENT"></action>
</intent-filter>
</service>



23. เค…เคฌ เค†เคชเค•ो MainActivity.java (app > java > domain > MainActivity.java > MainActivity) เคฎें เคœाเคจा เคนै เค”เคฐ เคจिเคšे เคฆिเค เค—เค Code เค•ो image เคฎें เคฆिเค–ाเค เคนुเค เคธ्เคฅाเคจ เคชเคฐ Paste เค•เคฐ เคฒेเคจा เคนै-
FirebaseMessaging.getInstance().subscribeToTopic("notifications");



เค…เคฌ เค†เคชเค•े Application เค•ो Run เค•เคฐเคจे เคธे เคชเคนเคฒे เค…เค—เคฐ เค†เคชเค•े เคฎें Application เคฐเคนा เคนोเค—ा เคคो เค‰เคธเค•ो Uninstall เค•เคฐ เคฒीเคœिเคฏे เคซिเคฐ App เค•ो Run เค•ीเคœिเคฏे เค‰เคธเคฎे Notification เค†เคจे เคฒเค—ेเค—ा।

Notification เค•ैเคธे Send เค•เคฐเคจा เคนै เค‰เคธเค•ो เคฎै Video เคฎें เคฌเคคाเคฏा เคนूँ

Comments

  1. hello
    my FirebaseInstanceIdService is getting depreciated is there any solution to fix it please tell the solution. By the way your content is amazng.

    ReplyDelete
  2. Push notifications are not working..

    ReplyDelete
  3. Hello FirebaseInstanceIdService is depreciated is there any way to fix this? Thank you so much for your videos.

    ReplyDelete
  4. I really love your videos it helped me a lot. My only problem is that the FirebaseInstanceIdService is depreciated how to fix this?

    ReplyDelete
  5. Hi.......
    I have very important problem.....in my MyFireBaseInstanceIDService ,,, Suggestions to create classes...

    Can you help me ?

    ReplyDelete
    Replies
    1. public class MyFirebaseMessagingService extends FirebaseMessagingService {

      @Override
      public void onNewToken(String s) {
      super.onNewToken(s);
      Log.e("NEW_TOKEN",s);
      }

      @Override
      public void onMessageReceived(RemoteMessage remoteMessage) {
      super.onMessageReceived(remoteMessage);
      }
      }

      Replace the code in MyFirebaseMessagingService
      Remove MyFireBaseInstanceIDService

      Delete
  6. tried the steps mentioned above but getting below error :-

    > Manifest merger failed with multiple errors, see logs

    Task :app:processDebugMainManifest FAILED
    F:\AndroidCode\WebView-Demo-master\app\src\main\AndroidManifest.xml:27:8-32:19 Error:
    android:exported needs to be explicitly specified for element . Apps targeting Android 12 and higher are required to specify an explicit value for `android:exported` when the corresponding component has an intent filter defined. See https://developer.android.com/guide/topics/manifest/activity-element#exported for details.
    F:\AndroidCode\WebView-Demo-master\app\src\main\AndroidManifest.xml:33:9-37:19 Error:
    android:exported needs to be explicitly specified for element . Apps targeting Android 12 and higher are required to specify an explicit value for `android:exported` when the corresponding component has an intent filter defined. See https://developer.android.com/guide/topics/manifest/activity-element#exported for details.

    See http://g.co/androidstudio/manifest-merger for more information about the manifest merger.



    ReplyDelete
  7. Thanks a lot brother for your help.
    I have 2 issues with the APP.

    1. The external links don't open. If there is ZOOM, Whatsapp or other link, it shows error.

    2. The welcome splash screen process created error in Manifest.

    How to fix it? I can pay you for it. Please resolve this. Please contact me @ 6359955995

    ReplyDelete

Post a Comment

Popular posts from this blog

Convert Website Into An Android App | #6 Add Swipe down to Refresh functionality

Convert Website Into An Android App | #8 Adding a Splash Screen