1. Giriş
Eski FCM API ile karşılaştırıldığında FCM HTTP v1 API, kısa ömürlü erişim jetonları kullanarak daha güvenli bir yetkilendirme modeli sağlar. FCM v1 API için erişim jetonu oluşturma adımları, eski API'ye yönelik adımlardan önemli ölçüde farklıdır.
Bu codelab'de, FCM HTTP v1 API kullanılarak Android uygulamalarına push bildirimleri göndermeyi etkinleştirmek için istemci ve sunucu tarafı kurulum süreci açıklanmaktadır. Bu makalede, v1 API için kimlik bilgisi oluşturmanın önemli adımı vurgulanmaktadır.
Daha fazla bilgiyi şu adreste bulabilirsiniz:
Ön koşullar
- Java ve Android'de geliştirme ile ilgili temel bilgiler
Neler öğreneceksiniz?
- FCM HTTP v1 API'yi kullanarak Android uygulamanıza push bildirimleri göndermeyi etkinleştirmek için istemci ve sunucu tarafı kurulumunun ayrıntılı adımları
- Hizmet hesaplarını kullanarak HTTP v1 API için kimlik bilgisi oluşturma
- HTTP v1 API üzerinden test mesajları gönderme
Gerekenler
Android Studio'nun en son kararlı sürümü
Aşağıdaki cihazlardan biri:
- Bilgisayarınıza bağlı fiziksel bir Android cihaz
- Android emülatörü (Android Emulator'da uygulamaları çalıştırma bölümüne bakın)
Tercih ettiğiniz bir Java geliştirme ortamı veya kod düzenleyici
2. Firebase projesi ve Android uygulaması kurulumu
Kod laboratuvarının sonunda, Firebase Cloud Messaging'i kullanarak uygulamanıza mesaj gönderebileceksiniz. Bunu yapmadan önce bir Firebase projesi oluşturmanız gerekir. Bu codelab'de, FCM ile entegrasyon için örnek kod içeren bir Android uygulaması da sunulmaktadır.
Firebase projesi kurulumu
- "1. Adım: Firebase Projesi oluşturun" adımlarını uygulayın "Bu codelab için kendi Firebase projenizi oluşturun.
Android uygulaması kurulumu
Bu codelab'de sağlanan örnek Android uygulaması zaten FCM ile entegredir. Başlatıldıktan sonra FCM sunucusuna kaydedilir ve bir konuya abone olur. Bu codelab'in sonraki adımlarında, konuya bir konu mesajı gönderecek ve uygulamanız bu mesajı alacaktır.
- Firebase Android hızlı başlangıç örneğini indirin.
- Projeyi https://github.com/firebase/quickstart-android/tree/master/messaging adresinden Android Studio'ya aktarın.
- Uygulamayı Firebase Konsolu'na kaydedin. Uygulama adı:
com.google.firebase.quickstart.fcm
. "2. Adım: Uygulamanızı Firebase'e kaydedin" bölümündeki adımları uygulayarak bu uygulamayı Firebase projenize kaydedin. bölümüne ekleyin. - "3. Adım: Firebase yapılandırma dosyası ekleyin" başlıklı makalenin 1. bölümünü uygulayın
google-services.json
dosyasını indirip projenize ekleyin. Projeyi derleyin ve çalıştırın.
3. Uygulama sunucusunu ayarlama
Uygulamanız kurulduğuna göre artık FCM v1 API'yi kullanarak uygulamanıza mesaj göndermek için sunucu tarafı kod örneği indirmeniz gerekir. Bu kod, erişim jetonu oluşturmak için API kimlik bilgilerini yükler (sonraki bölümde açıklanmıştır). Ardından, FCM konu mesajlaşmasını kullanarak uygulamanıza bir mesaj gönderir.
- GitHub projesini indirerek başlangıç sunucu kodunu içe aktarın. "Mesajlaşma" projesi, mesaj gönderme işlevi sağlayan firebase-admin SDK'sına bağımlı olan Gradle tabanlı bir Java projesidir.
Bir uygulama sunucusunun FCM ile nasıl çalışması gerektiğiyle ilgili daha fazla bilgiyi Sunucu ortamınız ve FCM dokümanında bulabilirsiniz.
4. v1 kimlik bilgisi alın
FCM HTTP v1 API, OAuth2 güvenlik modeline göre kısa ömürlü erişim jetonları kullanır. Kısa ömürlü erişim jetonu, FCM eski API'de kullanılan statik API anahtarıyla karşılaştırıldığında kimlik bilgileri sızıntısı riskine daha az açıktır. Bu bölümde, API'yi çağırmak için kullanılan erişim jetonunu oluşturmak amacıyla kimlik bilgisi oluşturmaya yönelik adımlar ayrıntılı olarak açıklanmaktadır.
- Firebase Admin SDK'nın, FCM API'lerine yapılan çağrıları yetkilendirmesine izin vermek için Firebase hizmet hesabı oluşturun. Firebase konsolunda Proje Ayarları'nı açın ve Hizmet hesapları sekmesini seçin. Yapılandırma snippet'ini indirmek için Yeni özel anahtar oluştur'u tıklayın.
- İndirilen GitHub projesinde, indirilen dosyayı
service-account.json
olarak yeniden adlandırın ve projeninmessaging/
yoluna kopyalayın. Messaging.java
sınıfındakigetAccessToken()
yöntemi (aşağıda gösterilmiştir), 1 saat boyunca geçerli olan bir OAuth2 jetonu oluşturur.
private static String getAccessToken() throws IOException { GoogleCredentials googleCredentials = GoogleCredentials.fromStream(new FileInputStream("service-account.json")).createScoped(Arrays.asList(SCOPES)); googleCredentials.refresh(); return googleCredentials.getAccessToken().getTokenValue(); }
- Ana yöntemi değiştirerek aşağıdaki satırı ekleyin:
public static void main(String[] args) throws IOException { System.out.println(getAccessToken()); ... }
- Terminalinizde mesajlaşma/ proje dizinine gidin ve şunu yazın:
./gradlew run -Pmessage=common-message
OAuth2 jetonunu yazdırın.
Daha fazla bilgiyi Gönderme isteklerini yetkilendirme başlıklı makalede bulabilirsiniz.
5. REST API ile mesaj gönderme
Artık HTTP v1 API üzerinden mesaj göndermeye hazırsınız. Aşağıdaki adımları izleyin:
- Erişim jetonunu bir HTTP istek başlığına eklemek için:
- Jetonu
Authorization: Bearer <access_token>
biçimindeki Yetkilendirme başlığının değeri olarak ekleyin. - curl kullanarak FCM v1 API'ye bir HTTP isteği gönderin:
curl -s -X POST -H "Content-Type: application/json" -H "Authorization: Bearer $OAuth2_token" -H "X-GFE-SSL: yes" -d "{\"message\": {\"topic\": \"$topic_name\", \"notification\": {\"title\": \"breaking news\", \"body\": \"This is breaking news\"}}}" https://fcm.googleapis.com/v1/projects/[PROJECT_NAME]/messages:send
Yukarıdaki $topic_name
, Firebase projesi ve Android uygulaması kurulumunda belirtilen Android uygulaması kodunda bulunabilir. Varsayılan olarak bu değer "weather"
'tır.
- Bir ileti başarıyla teslim edildikten sonra, ekranınızda aşağıdaki resme benzer bir bildirim pop-up penceresi görürsünüz:
6. Sonuç
Tebrikler! Şu işlemler için codelab'i başarıyla tamamladınız:
- Firebase projesi oluşturun
- Firebase'i Android uygulamasıyla entegre etme
- FCM HTTP v1 API için kimlik bilgileri oluşturma
- FCM HTTP v1 API aracılığıyla uygulamanıza mesaj gönderin
FCM'nin sunduğu ileri seviye özellikleri keşfetmek için aşağıdaki referansları inceleyebilirsiniz: