5

Jak wysłać wiadomość chmury Firebase z aplikacji Google App Engine/Cloud Endpoints?Jak wysłać wiadomość chmury Firebase z aplikacji Google App Engine

Android Studio automatycznie generuje następujący kod, aby wysłać wiadomość Google Cloud. Chociaż możesz użyć tego samego kodu do wysłania FCM, nie możesz ustawić "powiadomienia" lub "priorytetu" lub czegoś podobnego, jakiego używa nowy FCM.

Czy istnieje możliwość zaimportowania tego lub przykładu użycia usługi Firebase Cloud Messaging w aplikacji App Engine, dzięki czemu można z łatwością wykonywać takie czynności, jak ustawianie wiadomości, powiadomień, priorytetów itp.?

To właśnie Android Studio Cloud Endpoints auto generuje dla Ciebie obecnie:

// Gradle dependency: 
compile 'com.google.gcm:gcm-server:1.0.0' 

/** 
    * Api Keys can be obtained from the google cloud console 
    */ 
    private static final String API_KEY = System.getProperty("gcm.api.key"); 

    /** 
    * Send to the first 10 devices (You can modify this to send to any number of devices or a specific device) 
    * 
    * @param message The message to send 
    */ 
    public void sendMessage(@Named("message") String message) throws IOException { 
     if (message == null || message.trim().length() == 0) { 
      log.warning("Not sending message because it is empty"); 
      return; 
     } 
     // crop longer messages 
     if (message.length() > 1000) { 
      message = message.substring(0, 1000) + "[...]"; 
     } 
     Sender sender = new Sender(API_KEY); 

     Message msg = new Message.Builder().addData("message", message).build(); 
     List<RegistrationRecord> records = ofy().load().type(RegistrationRecord.class).limit(10).list(); 
     for (RegistrationRecord record : records) { 
      Result result = sender.send(msg, record.getRegId(), 5); 
      if (result.getMessageId() != null) { 
       log.info("Message sent to " + record.getRegId()); 
       String canonicalRegId = result.getCanonicalRegistrationId(); 
       if (canonicalRegId != null) { 
        // if the regId changed, we have to update the datastore 
        log.info("Registration Id changed for " + record.getRegId() + " updating to " + canonicalRegId); 
        record.setRegId(canonicalRegId); 
        ofy().save().entity(record).now(); 
       } 
      } else { 
       String error = result.getErrorCodeName(); 
       if (error.equals(Constants.ERROR_NOT_REGISTERED)) { 
        log.warning("Registration Id " + record.getRegId() + " no longer registered with GCM, removing from datastore"); 
        // if the device is no longer registered with Gcm, remove it from the datastore 
        ofy().delete().entity(record).now(); 
       } else { 
        log.warning("Error when sending message : " + error); 
       } 
      } 
     } 
    } 

Odpowiedz

5

Obecnie nie Firebase klient do wysyłania wiadomości z serwera aplikacji. Powinieneś tylko wysyłać surowe żądania HTTP z ładunkami JSON z twojego punktu końcowego za pomocą protokołu udokumentowanego here. server reference pokazuje, jakie parametry można użyć, co obejmuje priorytet.

+1

Dzięki za odpowiedź. Miałem nadzieję, że będzie już jakiś klient dla fcm, ale wygląda na to, że będę musiał sam to napisać. Dokumentacja jest bardzo dobra, więc nie powinna być zbyt trudna. – Micro

+0

@MicroR czy masz jakieś rozwiązanie, aby wysłać fcm z silnika wyszukiwarki Google –

+0

@Hasanshaikh Nie jeszcze. – Micro