Android: Anlık Bildirimi çevrimiçi test edin (Google Bulut Mesajlaşma) [kapalı]


99

Güncelleme: GCM kullanımdan kaldırıldı, FCM'yi kullanın

Uygulamamda Google Cloud Messaging kullanıyorum. Sunucu kodu henüz hazır değil ve bazı güvenlik duvarı kısıtlamaları nedeniyle ortamımda push bildirimi için bir test sunucusu dağıtamıyorum. Aradığım şey, istemci uygulamamı test etmek için cihazıma bazı test bildirimleri gönderecek çevrimiçi bir sunucu.


Diğer gönderileri sildiniz, bu yüzden buraya yazıyorum :-) NotificationListenerService, api 18'e eklendi ... Kimlikleri, int dizi olarak SharedPreferences'da saklayın ve yeni kimlik ekledikten sonra almanız gerekenden daha büyükse dizinin boyutunu kontrol etmek için biraz mantık yapın ilk öğe ve iptal ...
Selvin

Yanıtlar:


167

Bunu yapmanın çok kolay bir yolunu buldum.

Http://phpfiddle.org/ adresini açın.

Aşağıdaki php komut dosyasını kutuya yapıştırın. Php betik setinde API_ACCESS_KEY, cihaz kimliklerini virgülle ayrılmış olarak ayarlayın.

F9'a basın veya Çalıştır'ı tıklayın.

İyi eğlenceler ;)

<?php


// API access key from Google API's Console
define( 'API_ACCESS_KEY', 'YOUR-API-ACCESS-KEY-GOES-HERE' );


$registrationIds = array("YOUR DEVICE IDS WILL GO HERE" );

// prep the bundle
$msg = array
(
    'message'       => 'here is a message. message',
    'title'         => 'This is a title. title',
    'subtitle'      => 'This is a subtitle. subtitle',
    'tickerText'    => 'Ticker text here...Ticker text here...Ticker text here',
    'vibrate'   => 1,
    'sound'     => 1
);

$fields = array
(
    'registration_ids'  => $registrationIds,
    'data'              => $msg
);

$headers = array
(
    'Authorization: key=' . API_ACCESS_KEY,
    'Content-Type: application/json'
);

$ch = curl_init();
curl_setopt( $ch,CURLOPT_URL, 'https://android.googleapis.com/gcm/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;
?>

FCM için google url'si şu şekilde olacaktır: https://fcm.googleapis.com/fcm/send

FCM v1 için google url'si şu şekilde olacaktır: https://fcm.googleapis.com/v1/projects/YOUR_GOOGLE_CONSOLE_PROJECT_ID/messages:send

Not: Google geliştirici konsolunda API Erişim Anahtarı oluştururken ip adresi olarak 0.0.0.0/0 kullanmanız gerekir. (Test amaçlı).

GCM sunucusundan geçersiz Kayıt yanıtı almanız durumunda, lütfen cihaz kodunuzun geçerliliğini çapraz kontrol edin. Aşağıdaki url'yi kullanarak cihaz jetonunuzun geçerliliğini kontrol edebilirsiniz:

https://www.googleapis.com/oauth2/v1/tokeninfo?access_token=YOUR_DEVICE_TOKEN

Bazı yanıt kodları:

Aşağıda, sunucudan alabileceğiniz bazı yanıt kodlarının açıklaması bulunmaktadır.

{ "message_id": "XXXX" } - success
{ "message_id": "XXXX", "registration_id": "XXXX" } - success, device registration id has been changed mainly due to app re-install
{ "error": "Unavailable" } - Server not available, resend the message
{ "error": "InvalidRegistration" } - Invalid device registration Id 
{ "error": "NotRegistered"} - Application was uninstalled from the device

1
Pek değil :) Test amaçlı olarak 0.0.0.0/0 ip kullanabilirsiniz. işe yarardı.
Adnan

4
Her seferinde alıyorum (api anahtarı ve cihaz kimliğiyle: hata ":" InvalidRegistration
Leandro

4
API KEYAnahtarınızı onlara vermek çok güvenli olmadığından lütfen daha sonra yeniden oluşturun .
Flash Thunder

6
Yetkisiz Hata 401 almaya devam ediyorum. Herhangi bir fikrin neden?
RAZEL Soco

2
{"error": "invalid_token", "error_description": "Geçersiz Değer"} bunu buldum. ve geçersiz kayıt kimliği alınıyor.
Anand

159

POSTMAN: Bir google chrome uzantısı

Mesaj göndermek için sunucu yerine postacı kullanın. Postacı ayarları aşağıdaki gibidir:

Request Type: POST

URL: https://android.googleapis.com/gcm/send

Header
  Authorization  : key=your key //Google API KEY
  Content-Type : application/json

JSON (raw) :
{       
  "registration_ids":["yours"],
  "data": {
    "Hello" : "World"
  } 
}

başarıya ulaşacaksın

Response :
{
  "multicast_id": 6506103988515583000,
  "success": 1,
  "failure": 0,
  "canonical_ids": 0,
  "results": [
    {
      "message_id": "0:1432811719975865%54f79db3f9fd7ecd"
    }
  ]
}

3
Bence bu, GCM'yi test etmek için en temiz ve güvenli çözüm. Teşekkürler!
Bianca Daniciuc

12
Benim için bir POST ile çalıştı! Ayrıca Yetkilendirme başlığında yalnızca API_KEY değil, "key =" bulundurmayı da unutmayın
Raphael Royer-Rivard

3
@Raphael Royer-Rivard you life saver, Yetkilendirme başlığında "key =" eksik
Khurram Shehzad

3
Google Developer Console ile oluşturabileceğiniz birkaç anahtar vardır. Postacı ile kullanmak için net değilseniz, bir "Sunucu Anahtarı" oluşturmanız gerekir.
Liangjun

3
Buradaki "kayıt_kimlikleri" nedir? onları nerede bulabilirim?
Himel Nag Rana

19

Pushwatch , Django / Python'da kendim geliştirdiğim bir çevrimiçi GCM ve APNS push bildirim test cihazıdır, çünkü birden fazla proje üzerinde çalışırken kendimi benzer bir durumda buldum. İkisini de gönderebilirGCM ve APNSbildirimleri ve ayrıca ek argümanlarını JSON mesajları destekler. Aşağıda test uzmanlarına bağlantılar verilmiştir.

Herhangi bir sorunuz varsa veya kullanırken sorun yaşarsanız lütfen bize bildirin.


1
Lütfen olumsuz oyunuzu açıklayın.
Amyth

1
Tam ihtiyacım olan şey mükemmel çalışıyor (postacıyı denedim, işe yaradı, ancak uygulamam açılmadığında mesajın cihazımda görünmesine neden olmadı ..)
Greywire

Merhaba Amyth, sitenizde şu hatayı alıyorum: "HTTP Hatası 401: Geçersiz (eski) Sunucu anahtarı teslim edildi veya Gönderenin istek gerçekleştirme yetkisi yok." Ne yapacağından emin değil misin? Az önce bir Google Projesi oluşturdum ve SenderID için proje kimliğini ve proje Numarasını kullanmayı denedim ve sitenizi google API ayarlarında "Bu HTTP yönlendiricilerinden (web siteleri) gelen istekleri kabul et" bölümüne ekledim. Saygılarımızla Rasmus
Thylle

Bu URL'nin artık desteklenmediğini unutmayın: Google, 10 Nisan 2018 itibarıyla GCM'yi kullanımdan kaldırmıştır. GCM sunucusu ve istemci API'leri kullanımdan kaldırıldı ve 11 Nisan 2019'da kaldırılacak. GCM bilgisi
Stinky Towel

7

Postacı ve php fiddle iyi bir çözümdür. Ancak her seferinde GCM URL'sini ve başlık bilgilerini eklemekten kaçınmak için bu şık GCM Bildirim Test Aracı'nı da kullanabilirsiniz.


2
Hem Android hem de iOS'u destekleyen bu çevrimiçi test cihazını kullanabilirsiniz. Kullanımı kolay basit web sitesi pushtry.com 1. Sizi .p12 dosyasını seçin 2. Cihaz belirteci3'ü girin 3. Ortam Korumalı Alanını veya üretimi seçin 4. Mesaj girin 5. Gönder
Arvind
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.