Senden Sie über den FCM-Dienst von Google eine Nachricht an Ihr Android-Gerät. Senden Sie Nachrichten mithilfe einer Server-API, die HTTP v1 unterstützt, damit Sie Push-Benachrichtigungen auf Ihrem Android-Gerät empfangen können.
Geben Sie den Projektnamen ein (beliebiger Name) Analytics and Billing Region: Japan Klicken Sie auf Projekt erstellen
keytool -exportcert -list -v \
-alias androiddebugkey -keystore ~/.android/debug.keystore
Sie werden aufgefordert, Ihr Passwort einzugeben.
android
Ich konnte es bei ausstellen.
Fügen Sie die SHA-1-Schlüsselausgabe in die Konsole ein, wenn Sie debug.keystore zum Debuggen in das Signaturzertifikat SHA-1 (optional) ausgegeben haben.
Drücken Sie App registrieren.
Laden Sie google-services.json herunter und platzieren Sie es direkt unter der Android Studio-App.
Die folgenden Dienste wurden zu AndroidManifest.xml hinzugefügt.
<service
android:name="com.example.shosakaguchi.notifytest.FcmMessagingService"
>
<intent-filter>
<action android:name="com.google.firebase.MESSAGING_EVENT" />
</intent-filter>
</service>
<service
android:name="com.example.shosakaguchi.notifytest.FcmInstanceIdService"
>
<intent-filter>
<action android:name="com.google.firebase.INSTANCE_ID_EVENT" />
</intent-filter>
Die folgenden Abhängigkeiten wurden zur App build.gradle hinzugefügt.
api 'com.google.firebase:firebase-core:+'
api 'com.google.firebase:firebase-messaging:+'
api 'com.fasterxml.jackson.core:jackson-databind:+'
api 'com.google.firebase:firebase-auth:+'
Fügen Sie dem Projekt build.gradle die folgenden Abhängigkeiten hinzu + wenden Sie Google-Services an.
dependencies {
api "com.google.firebase:firebase-messaging:10.2.4"
}
apply plugin: 'com.google.gms.google-services'
Erstellen Sie das Projekt neu.
Generieren Sie die folgende Klasse in Android Studio.
Eine Klasse, die FirebaseMessagingService erbt (der Inhalt ist leer)
Der Name einer beliebigen Klasse erweitert FirebaseMessagingService
Klasse, die FirebaseInstanceIdService erbt
Jeder Klassenname erweitert FirebaseInstanceIdService
@Override
public void onTokenRefresh() {
// Get updated InstanceID token.
String refreshedToken = FirebaseInstanceId.getInstance().getToken();
Log.d(TAG, "Refreshed token: " + refreshedToken);
}
Code hinzugefügt, um Token und Terminal-Token in MainActivity.java abzurufen.
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//get device token
FcmInstanceIdService sv = new FcmInstanceIdService();
sv.onTokenRefresh();
}
}
Führen Sie das Projekt auf dem Gerät aus, das die Push-Benachrichtigung erhält.
Notieren Sie sich die Token, die in der Logcat-Konsole unter Android Studio angezeigt werden.
Erstellen Sie ein neues Frühlingsprojekt mit STS in Eclipse.
Fügen Sie build.gradle die folgenden Abhängigkeiten hinzu.
compile('com.fasterxml.jackson.core:jackson-databind:+')
compile('com.google.firebase:firebase-admin:+')
Klicken Sie in der Gradle-Aufgabe auf buildDependents.
Bereiten Sie die folgenden Informationen auf der Einstellungsseite der Firabase-Konsolenseite vor. -POST-Zielendpunkt-URL https://fcm.googleapis.com/v1/projects/全般ページのプロジェクトID/messages:send"
· Privat Schlüssel Klicken Sie auf der Seite mit den Firabase-Konsoleneinstellungen auf das Dienstkonto Klicken Sie auf der Registerkarte Firebase Admin SDK auf "Neuen privaten Schlüssel generieren". Honyara.json wird heruntergeladen. Legen Sie es daher im entsprechenden Ressourcenordner Ihres Spring-Projekts ab.
public static void initializeToken() throws IOException{
FileInputStream serviceAccount = new FileInputStream("Pfad des privaten Schlüssels heruntergeladen");
FirebaseOptions options = new FirebaseOptions.Builder()
.setCredentials(GoogleCredentials.fromStream(serviceAccount))
.setDatabaseUrl("https://Projekt-ID.firebaseio.com")
.build();
FirebaseApp.initializeApp(options);
}
public static String getAccessToken() throws IOException {
GoogleCredential googleCredential = GoogleCredential
.fromStream(new FileInputStream("Pfad des privaten Schlüssels heruntergeladen"))
.createScoped(Arrays.asList("https://www.googleapis.com/auth/firebase.messaging"
));
googleCredential.refreshToken();
return googleCredential.getAccessToken();
}
Vorerst sollte die Hauptklasse verarbeitet werden, um eine Nachricht zu senden, wenn die Serveranwendung ausgeführt wird.
TestProject.java
public static void main(String[] args) {
SpringApplication.run(PushAppTestApplication.class, args);
System.out.println("start");
try {
//initialize firebasio
initializeToken();
//post param create
URL url = new URL(POST-Zielendpunkt-URL);
HttpURLConnection httpURLConnection = (HttpURLConnection) url.openConnection();
httpURLConnection.setRequestMethod("POST");
httpURLConnection.setRequestProperty("Authorization", "Bearer " + getAccessToken());
// System.out.println("token" + getAccessToken());
httpURLConnection.setRequestProperty("Content-Type", "application/json; UTF-8");
httpURLConnection.setDoOutput(true);
httpURLConnection.connect();
OutputStream out = httpURLConnection.getOutputStream();
PrintStream ps = new PrintStream(out);
ps.print(KÖRPER Teil der Anforderungsnachricht JSON (später beschrieben));
ps.close();
//return response output
InputStream is = httpURLConnection.getInputStream();
BufferedReader reader = new BufferedReader(new InputStreamReader(is));
String s;
while ((s = reader.readLine()) != null) {
System.out.println(httpURLConnection.getResponseMessage() + httpURLConnection.getResponseCode());
}
reader.close();
httpURLConnection.disconnect();
} catch(Exception e) {
e.printStackTrace();
}
System.out.println("end");
}
KÖRPER Teil der Anforderungsnachricht JSON
private final static String reqJson = "{\n" +
" \"message\":{\n" +
" \"token\" : \"Token, die in der Logcat-Konsole unter Android Studio angezeigt werden",\n" +
" \"notification\" : {\n" +
" \"body\" : \"Test Nachricht\",\n" +
" \"title\" : \"Testtitel\",\n" +
" }\n" +
" }\n" +
"}";
Das ist alles für die Implementierung.
Dieses Mal habe ich hauptsächlich das Senden von Push-Benachrichtigungen an ein einzelnes Terminal implementiert. In der Praxis ist es notwendig, die Annahme beim Senden an mehrere Terminals, die Annahme der Übertragungszeit (Cron Batch usw.), den Mechanismus zum Senden und Speichern des Geräte-Tokens an den Server sorgfältig zu berücksichtigen.
Ab dem nächsten Mal möchte ich diese HowTos und Beispiele vorstellen.
Danke für deine harte Arbeit.
Recommended Posts