Android: Uji Push Notification online (Google Cloud Messaging) [ditutup]

99

Pembaruan: GCM tidak digunakan lagi, gunakan FCM

Saya mengimplementasikan Google Cloud Messaging di aplikasi saya. Kode server belum siap dan dalam lingkungan saya karena beberapa batasan firewall, saya tidak dapat menggunakan server pengujian untuk pemberitahuan push. Apa yang saya cari adalah server online yang akan mengirimkan beberapa pemberitahuan pengujian ke perangkat saya untuk menguji implementasi klien saya.

Adnan
sumber
Anda memang menghapus posting lain itu sebabnya saya menulis di sini :-) NotificationListenerService ditambahkan di api 18 ... Simpan saja id di SharedPreferences sebagai array int dan lakukan beberapa logika untuk memeriksa ukuran array jika setelah menambahkan id baru lebih besar dari yang Anda butuhkan elemen pertama dan membatalkan ...
Selvin
1
Anda dapat menguji menggunakan pushtry.com
Arvind

Jawaban:

167

Menemukan cara yang sangat mudah untuk melakukan ini.

Buka http://phpfiddle.org/

Tempel skrip php berikut di kotak. Dalam set skrip php API_ACCESS_KEY, setel id perangkat yang dipisahkan dengan koma.

Tekan F9 atau klik Jalankan.

Selamat bersenang-senang ;)

<?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;
?>

Untuk FCM, url google adalah: https://fcm.googleapis.com/fcm/send

Untuk URL Google FCM v1 akan menjadi: https://fcm.googleapis.com/v1/projects/YOUR_GOOGLE_CONSOLE_PROJECT_ID/messages:send

Catatan: Saat membuat Kunci Akses API di konsol pengembang google, Anda harus menggunakan 0.0.0.0/0 sebagai alamat ip. (Untuk tujuan pengujian).

Jika menerima tanggapan Pendaftaran yang tidak valid dari server GCM, harap periksa kembali validitas token perangkat Anda. Anda dapat memeriksa validitas token perangkat Anda menggunakan url berikut:

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

Beberapa kode respon:

Berikut ini adalah deskripsi dari beberapa kode respon yang mungkin Anda terima dari server.

{ "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
Adnan
sumber
1
Tidak juga :) Untuk tujuan pengujian, Anda dapat menggunakan 0.0.0.0/0 ip. itu akan berhasil.
Adnan
4
Saya mendapatkan setiap waktu (dengan kunci api dan id perangkat: error ":" InvalidRegistration
Leandro
4
Harap buat ulang API KEYsetelahnya, karena tidak terlalu aman untuk memberikan kunci Anda kepada mereka.
Flash Thunder
6
saya terus mendapatkan Kesalahan Tidak Sah 401. tahu mengapa?
Razel Soco
2
{"error": "invalid_token", "error_description": "Invalid Value"} saya menemukan ini. dan mendapatkan nomor registrasi yang tidak valid.
Anand
159

POSTMAN: Ekstensi google chrome

Gunakan tukang pos untuk mengirim pesan, bukan server. Pengaturan tukang pos adalah sebagai berikut:

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"
  } 
}

pada kesuksesan yang akan Anda dapatkan

Response :
{
  "multicast_id": 6506103988515583000,
  "success": 1,
  "failure": 0,
  "canonical_ids": 0,
  "results": [
    {
      "message_id": "0:1432811719975865%54f79db3f9fd7ecd"
    }
  ]
}
Michael
sumber
3
Saya rasa ini adalah solusi paling bersih dan aman untuk menguji GCM. Terima kasih!
Bianca Daniciuc
12
Bekerja dengan POST untuk saya! Juga jangan lupa untuk memiliki "key =" di header Otorisasi dan bukan hanya API_KEY
Raphael Royer-Rivard
3
@Raphael Royer-Rivard Anda penyelamat hidup, saya kehilangan "key =" di header Otorisasi
Khurram Shehzad
3
Ada beberapa kunci yang dapat Anda buat dengan Google Developer Console. Hanya jika Anda tidak jelas, untuk digunakan dengan tukang pos, Anda perlu membuat "Kunci Server".
Liangjun
3
Apa yang dimaksud dengan "Registration_ids" di sini? di mana menemukannya?
Himel Nag Rana
19

Pushwatch adalah penguji pemberitahuan push GCM dan APNS online gratis untuk digunakan yang dikembangkan oleh saya sendiri di Django / Python karena saya menemukan diri saya dalam situasi yang sama saat mengerjakan banyak proyek. Hal ini dapat mengirim baik GCMdan APNSpemberitahuan dan juga mendukung pesan JSON untuk argumen tambahan. Berikut adalah tautan ke penguji.

Beri tahu saya jika Anda memiliki pertanyaan atau menghadapi masalah saat menggunakannya.

Sebuah mitos
sumber
1
Tolong jelaskan downvote Anda.
Amyth
1
Hanya apa yang saya butuhkan, berfungsi dengan sempurna (mencoba tukang pos, yang agak berhasil, tetapi tidak menyebabkan pesan muncul di perangkat saya ketika aplikasi saya tidak dibuka ..)
Greywire
Hai Amyth, saya mendapatkan kesalahan ini di situs Anda: "Kesalahan HTTP 401: Kunci server tidak valid (lama) terkirim atau Pengirim tidak berwenang melakukan permintaan." Tidak yakin apa yang harus dilakukan? Saya baru saja membuat Google Project dan mencoba menggunakan ID proyek dan Nomor proyek untuk SenderID dan menambahkan situs Anda ke "Terima permintaan dari perujuk HTTP ini (situs web)" di setelan Google API. Salam Rasmus
Thylle
Perhatikan bahwa URL ini tidak lagi mendukung: Mulai 10 April 2018, Google telah menghentikan GCM. Server GCM dan API klien tidak digunakan lagi dan akan dihapus segera setelah 11 April 2019. Info GCM
Stinky Towel
7

Tukang pos adalah solusi yang baik dan begitu juga biola php. Namun untuk menghindari memasukkan URL GCM dan informasi header setiap saat, Anda juga dapat menggunakan Alat Uji Pemberitahuan GCM yang bagus ini

Varun
sumber
2
Anda dapat menggunakan penguji online ini yang mendukung Android dan iOS. Mudah digunakan, situs web sederhana pushtry.com 1. Pilih file .p12 Anda 2. Masukkan token perangkat3 3. Pilih lingkungan Sandbox atau produksi 4. Masukkan pesan 5. Kirim
Arvind