Envoyez un message à votre appareil Android à l'aide du service FCM de Google. Envoyez des messages à l'aide d'une API serveur prenant en charge HTTP v1 afin de pouvoir recevoir des notifications push sur votre appareil Android.
Entrez le nom du projet (n'importe quel nom) Région Analytics et facturation: Japon Appuyez sur Créer un projet
keytool -exportcert -list -v \
-alias androiddebugkey -keystore ~/.android/debug.keystore
Vous serez invité à entrer votre mot de passe.
android
J'ai pu le publier à.
Collez la sortie de la clé SHA-1 sur la console lorsque vous avez émis debug.keystore dans le certificat de signature SHA-1 (facultatif) pour le débogage.
Appuyez sur Enregistrer l'application.
Téléchargez google-services.json et placez-le directement sous l'application Android Studio.
Ajout des services suivants à AndroidManifest.xml.
<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>
Ajout des dépendances suivantes à l'application build.gradle.
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:+'
Ajoutez les dépendances suivantes au projet build.gradle + apply google-services.
dependencies {
api "com.google.firebase:firebase-messaging:10.2.4"
}
apply plugin: 'com.google.gms.google-services'
Reconstruisez le projet.
Générez la classe suivante dans Android Studio.
Une classe qui hérite de FirebaseMessagingService (le contenu est vide)
Le nom de classe arbitraire étend FirebaseMessagingService
Classe héritant de FirebaseInstanceIdService
Tout nom de classe étend FirebaseInstanceIdService
@Override
public void onTokenRefresh() {
// Get updated InstanceID token.
String refreshedToken = FirebaseInstanceId.getInstance().getToken();
Log.d(TAG, "Refreshed token: " + refreshedToken);
}
Ajout de code pour obtenir des jetons et des jetons de terminal dans MainActivity.java.
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();
}
}
Exécutez le projet sur l'appareil qui reçoit la notification push.
Notez les jetons qui apparaissent dans la console Logcat sur Android Studio.
Créez un nouveau projet Spring à l'aide de STS sur Eclipse.
Ajoutez les dépendances suivantes à build.gradle.
compile('com.fasterxml.jackson.core:jackson-databind:+')
compile('com.google.firebase:firebase-admin:+')
À partir de la tâche Gradle, appuyez sur buildDependents.
Préparez les informations suivantes à partir de la page des paramètres de la page de la console Firabase. -URL du point de terminaison de destination POST https://fcm.googleapis.com/v1/projects/全般ページのプロジェクトID/messages:send"
· Clé privée Cliquez sur le compte de service sur la page des paramètres de la console Firabase Appuyez sur "Générer une nouvelle clé privée" dans l'onglet SDK d'administration Firebase. Honyara.json sera téléchargé, alors placez-le dans le dossier de ressources approprié de votre projet Spring.
public static void initializeToken() throws IOException{
FileInputStream serviceAccount = new FileInputStream("Chemin de la clé privée téléchargé");
FirebaseOptions options = new FirebaseOptions.Builder()
.setCredentials(GoogleCredentials.fromStream(serviceAccount))
.setDatabaseUrl("https://ID du projet.firebaseio.com")
.build();
FirebaseApp.initializeApp(options);
}
public static String getAccessToken() throws IOException {
GoogleCredential googleCredential = GoogleCredential
.fromStream(new FileInputStream("Chemin de la clé privée téléchargé"))
.createScoped(Arrays.asList("https://www.googleapis.com/auth/firebase.messaging"
));
googleCredential.refreshToken();
return googleCredential.getAccessToken();
}
Pour le moment, pour envoyer un message lorsque l'application serveur est exécutée, la classe principale doit être traitée.
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(URL du point de terminaison de destination du POST);
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(BODY partie du message de requête JSON (décrit plus loin));
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");
}
BODY partie du message de requête JSON
private final static String reqJson = "{\n" +
" \"message\":{\n" +
" \"token\" : \"Jetons apparaissant dans la console Logcat sur Android Studio",\n" +
" \"notification\" : {\n" +
" \"body\" : \"Message d'essai\",\n" +
" \"title\" : \"Titre du test\",\n" +
" }\n" +
" }\n" +
"}";
C'est tout pour la mise en œuvre.
Cette fois, j'ai principalement implémenté l'envoi de notifications push vers un seul terminal. En pratique, il est nécessaire de bien réfléchir à l'hypothèse lors de l'envoi à plusieurs terminaux, à l'hypothèse du temps de transmission (cron batch etc.), au mécanisme pour envoyer le jeton d'appareil au serveur et à son stockage.
À partir de la prochaine fois, je voudrais vous présenter ces HowTos et exemples.
Je vous remercie pour votre travail acharné.
Recommended Posts