Как передать пользовательские данные (веб-URL) на сервер приложений, как в Firebase (Android) - PullRequest
0 голосов
/ 30 октября 2018

У меня есть приложение, с помощью которого я могу отправить push-уведомление на телефон с php-сервера. В консоли Firebase это работает отлично, я могу включить URL-адрес в поле пользовательских данных, так что когда пользователь нажимает на push-уведомление, открывается веб-просмотр, который открывает URL-адрес (в поле пользовательских данных).

как я могу также передавать пользовательские данные с сервера, чтобы при нажатии пользователем на push-уведомление открывался URL-адрес веб-просмотра.

Служба сообщений Firebase

public class MyFirebaseMessagingService extends FirebaseMessagingService{
private final String CHANNEL_ID="notificcation";
@Override
public void onNewToken(String s) {
    super.onNewToken(s);
    Log.e("NEW_TOKEN",s);

    FirebaseInstanceId.getInstance().getInstanceId().addOnSuccessListener(new OnSuccessListener<InstanceIdResult>() {
        @Override
        public void onSuccess(InstanceIdResult instanceIdResult) {
            String token = instanceIdResult.getToken();
            // Do whatever you want with your token now
            // i.e. store it on SharedPreferences or DB
            // or directly send it to server
            SharedPreferences sharedPreferences=getApplicationContext().getSharedPreferences(getString(R.string.FCM_PREF), Context.MODE_PRIVATE);
            SharedPreferences.Editor editor=sharedPreferences.edit();
            editor.putString(getString(R.string.FCM_TOKEN),token);
            editor.commit();

        }
    });

}



@Override
public void onMessageReceived(RemoteMessage remoteMessage) {

    handleMessage(remoteMessage.getData().get(Config.STR_KEY));








}






private void handleMessage(String message) {

    Intent pushNotification=new Intent(Config.STR_PUSH);
    pushNotification.putExtra(Config.STR_MESSAGE,message);
    LocalBroadcastManager.getInstance(this).sendBroadcast(pushNotification);


}

}

1 Ответ

0 голосов
/ 30 октября 2018

вам необходимо отправить уведомление для конкретного устройства с помощью его токена. и если вы хотите отправить более одного устройства, вы можете использовать цикл для отправки всем.

этот код в php отправит уведомление

    <?php

     define( 'API_ACCESS_KEY', 'Firebase Cloud Messaging api key' );
     $myToken = $_GET["token"];

     $title = $_POST["title"];
     $notification = $_POST["message"];
     $msg =
     [
        'message'   => $notification,
        'title'   => $title,
        'custom_url'   => $url
//you can add new data and receive it in android


     ];
     $fields = 
     [
        'registration_ids'  => $token,
        'data'      => $msg
     ];

     $headers = 
     [
       'Authorization: key=' . API_ACCESS_KEY,
       'Content-Type: application/json'
     ];
     $ch = curl_init();
     curl_setopt( $ch,CURLOPT_URL, 'https://fcm.googleapis.com/fcm/send' );
     curl_setopt( $ch,CURLOPT_POST, true );
     curl_setopt( $ch,CURLOPT_HTTPHEADER, $headers );
     curl_setopt( $ch,CURLOPT_RETURNTRANSFER, true );
     curl_setopt( $ch,CURLOPT_SSL_VERIFYPEER, false );
     curl_setopt( $ch,CURLOPT_POSTFIELDS, json_encode( $fields ) );
     $result = curl_exec($ch );
     curl_close( $ch );
     echo $result;
    ?>

см. Эту статью. Вы сможете сделать это.

https://medium.com/@chahat.jain0/android-push-notifications-using-firebase-cloud-messaging-fcm-php-and-mysql-da571960aeba

если у вас возникли проблемы, пожалуйста, оставьте комментарий.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...