web-dev-qa-db-ja.com

サーバーからAndroid mobileへのプッシュ通知を行う方法

プッシュ通知については何も知りません。私は学ぶことをしようとしています。しかし、私は理解していません。

サーバーシステムに1つのテーブルMySQLデータベースがあります。テーブルに変更が加えられた場合、Androidモバイルアプリで通知を表示します。

誰でも提案を提供できますか?

28
naveen

これについての良い説明があります:
http://quickblox.com/developers/SimpleSample-messages_users-Android

全体的な手順は次のとおりです。

  1. Google APIプロジェクトを作成する
  2. プロジェクトのプッシュ通知を有効にして、APIキーを取得します
  3. Android appを使用して登録IDを取得します(各デバイスには特定のアプリケーションの登録IDがあります)
  4. GSMによってGoogleサーバーを介してプッシュ通知としてプッシュメッセージを送信するサーバーアプリケーションを作成する
  5. アプリケーション側でプッシュ通知を受け取ったら通知を作成します

ここですべてを詳細に記述できるものではありません。すべてのステップでGoogleを使用します。

5
Amir Ziarati

実際、最近では主にそのuプロジェクト内のプッシュ通知FCMに使用されています....プッシュ通知を作成するための最良のリンク: link

プッシュ通知を実行する手順-Firebase Cloud Messaging Tutorial for Android

  1. Firebaseコンソールに移動して、新しいプロジェクトを作成します。
  2. 次に、アプリ名を入力して国を選択します。
  3. [FirebaseをAdd Android App。
  4. ここで、プロジェクトパッケージ名を入力し、[アプリの追加]をクリックする必要があります。
  5. [アプリの追加]をクリックすると、google-services.jsonファイルが取得されます。

アプリ側

  1. ここでAndroidプロジェクトに戻ります。アプリフォルダーに移動してgoogle-services.jsonファイルを貼り付けます
  2. ルートレベルのbuild.gradleファイルに移動して、次のコードを追加します。

    a。この行のクラスパス「com.google.gms:google-services:3.0.0」を追加します

    b。この行を追加して、「com.google.firebase:firebase-messaging:9.0.0」をコンパイルします

  3. プロジェクトを同期します。

  4. MyFirebaseInstanceIDService.Javaという名前のクラスを作成し、次のコードを記述します。

    public class MyFirebaseInstanceIDService extends FirebaseInstanceIdService {
    
        private static final String TAG = "MyFirebaseIIDService";
    
        @Override
        public void onTokenRefresh() {
    
            //Getting registration token
            String refreshedToken = FirebaseInstanceId.getInstance().getToken();
    
            //Displaying token on logcat 
            Log.d(TAG, "Refreshed token: " + refreshedToken);
    
        }
    
        private void sendRegistrationToServer(String token) {
            //You can implement this method to store the token on your server 
            //Not required for current project 
        }
    }
    
  5. 次に、MyFirebaseMessagingService.Javaを作成し、次のコードを記述します。

    import Android.app.NotificationManager;
    import Android.app.PendingIntent;
    import Android.content.Context;
    import Android.content.Intent;
    import Android.media.RingtoneManager;
    import Android.net.Uri;
    import Android.support.v4.app.NotificationCompat;
    import Android.util.Log;
    
    import com.google.firebase.messaging.FirebaseMessagingService;
    import com.google.firebase.messaging.RemoteMessage;
    
    /**
     * 
     */
    
    public class MyFirebaseMessagingService extends FirebaseMessagingService {
    
        private static final String TAG = "MyFirebaseMsgService";
    
        @Override
        public void onMessageReceived(RemoteMessage remoteMessage) {
            //Displaying data in log
            //It is optional 
            Log.d(TAG, "From: " + remoteMessage.getFrom());
            Log.d(TAG, "Notification Message Body: " + remoteMessage.getNotification().getBody());
    
            //Calling method to generate notification
            sendNotification(remoteMessage.getNotification().getBody());
        }
    
        //This method is only generating Push notification
        //It is same as we did in earlier posts 
        private void sendNotification(String messageBody) {
            Intent intent = new Intent(this, MainActivity.class);
            intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
            PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, intent,
                    PendingIntent.FLAG_ONE_SHOT);
    
            Uri defaultSoundUri= RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
            NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(this)
                    .setSmallIcon(R.mipmap.ic_launcher)
                    .setContentTitle("Firebase Push Notification")
                    .setContentText(messageBody)
                    .setAutoCancel(true)
                    .setSound(defaultSoundUri)
                    .setContentIntent(pendingIntent);
    
            NotificationManager notificationManager =
                    (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
    
            notificationManager.notify(0, notificationBuilder.build());
        }
    }
    
  6. 次に、AndroidManifest.xmlファイルで上記のサービスを定義する必要があります。マニフェストに移動して、次のように変更します。

    <!-- Adding Internet Permission -->
    
    <uses-permission Android:name="Android.permission.INTERNET"/>
    <application
        Android:allowBackup="true"
        Android:icon="@mipmap/ic_launcher"
        Android:label="@string/app_name"
        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>
    
        <!-- 
            Defining Services
        -->
        <service
            Android:name=".MyFirebaseMessagingService">
            <intent-filter>
                <action Android:name="com.google.firebase.MESSAGING_EVENT"/>
            </intent-filter>
        </service>
    
        <service
            Android:name=".MyFirebaseInstanceIDService">
            <intent-filter>
                <action Android:name="com.google.firebase.INSTANCE_ID_EVENT"/>
            </intent-filter>
        </service>
    </application>
    

最後に

Firebaseコンソールに移動し、作成したアプリを選択します。左側のメニューから通知を選択します。新しいメッセージをクリックします。メッセージを入力し、単一のデバイスを選択して、コピーしたトークンを貼り付け、送信をクリックします。私がビデオでやったのと同じ、あなたのデバイスを確認してください

3
Sagar Chorage

Firebaseをチェックアウトできます...このリンクをチェックアウトしてください

https://firebase.google.com/docs/cloud-messaging/

https://firebase.google.com/docs/notifications/

このリンクは、プッシュ通知について知るのに十分です

また、データベース内のデータが変更されたときに通知を送信する場合は、APIがFCMサーバーに要求を送信し、クライアントに必要なデータが配信されるようにします。

2
haider_kazal

まず、Googleプッシュ通知はGCM(Google Cloud Messaging)と呼ばれます。間違った名前を使用すると、間違った情報やチュートリアルにつながる可能性があります。もう1つは、開発者に依存する必要があります。この場合、Google Developers Webサイトから開始します。ここから、基本的な情報とコード例のほとんどを見つけることができます。 https://developers.google.com/cloud-messaging/

更新

[〜#〜] gcm [〜#〜]は非推奨です。使用するには Firebase Cloud Messaging(FCM)

1
Tadas