Android: ทดสอบการแจ้งเตือนแบบพุชออนไลน์ (Google Cloud Messaging) [ปิด]


99

อัปเดต: GCMเลิกใช้แล้วใช้FCM

ฉันกำลังใช้งาน Google Cloud Messaging ในแอปพลิเคชันของฉัน รหัสเซิร์ฟเวอร์ยังไม่พร้อมใช้งานและในสภาพแวดล้อมของฉันเนื่องจากข้อ จำกัด ไฟร์วอลล์บางประการฉันไม่สามารถปรับใช้เซิร์ฟเวอร์ทดสอบสำหรับการแจ้งเตือนแบบพุชได้ สิ่งที่ฉันกำลังมองหาคือเซิร์ฟเวอร์ออนไลน์ซึ่งจะส่งการแจ้งเตือนการทดสอบไปยังอุปกรณ์ของฉันเพื่อทดสอบการใช้งานไคลเอ็นต์ของฉัน


คุณได้ลบโพสต์อื่น ๆ นั่นคือสาเหตุที่ฉันเขียนที่นี่ :-) มีการเพิ่ม NotificationListenerService ใน api 18 ... เพียงแค่เก็บรหัสใน SharedPreferences เป็นอาร์เรย์ int และใช้ตรรกะบางอย่างเพื่อ chceck ขนาดของอาร์เรย์หากหลังจากเพิ่ม id ใหม่ใหญ่กว่าที่คุณต้องการ องค์ประกอบแรกและยกเลิก ...
Selvin

1
คุณสามารถทดสอบโดยใช้pushtry.com
Arvind

คำตอบ:


167

พบวิธีที่ง่ายมากในการทำเช่นนี้

เปิดhttp://phpfiddle.org/

วางสคริปต์ php ต่อไปนี้ในกล่อง ในชุดสคริปต์ php API_ACCESS_KEY ตั้งค่ารหัสอุปกรณ์ที่คั่นด้วยโคม่า

กด F9 หรือคลิกเรียกใช้

มีความสุข ;)

<?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 URL ของ Google จะเป็น: https://fcm.googleapis.com/fcm/send

สำหรับ FCM v1 google url จะเป็น: https://fcm.googleapis.com/v1/projects/YOUR_GOOGLE_CONSOLE_PROJECT_ID/messages:send

หมายเหตุ: ขณะสร้างคีย์การเข้าถึง API บนคอนโซลนักพัฒนาของ Google คุณต้องใช้ 0.0.0.0/0 เป็นที่อยู่ IP (เพื่อการทดสอบ).

ในกรณีที่ได้รับการตอบกลับการลงทะเบียนที่ไม่ถูกต้องจากเซิร์ฟเวอร์ GCM โปรดตรวจสอบความถูกต้องของโทเค็นอุปกรณ์ของคุณ คุณสามารถตรวจสอบความถูกต้องของโทเค็นอุปกรณ์ของคุณได้โดยใช้ URL ต่อไปนี้:

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

รหัสตอบกลับบางส่วน:

ต่อไปนี้เป็นคำอธิบายของรหัสตอบกลับบางส่วนที่คุณอาจได้รับจากเซิร์ฟเวอร์

{ "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
ไม่จริง :) เพื่อการทดสอบคุณสามารถใช้ 0.0.0.0/0 ip มันจะได้ผล
Adnan

4
ฉันได้รับทุกครั้ง (ด้วยคีย์ api และรหัสอุปกรณ์: error ":" InvalidRegistration
Leandro

4
โปรดสร้างใหม่ในAPI KEYภายหลังเนื่องจากการให้กุญแจของคุณไม่ปลอดภัยเกินไป
Flash Thunder

6
ฉันยังคงได้รับข้อผิดพลาด 401 ที่ไม่ได้รับอนุญาตคิดว่าทำไม?
Razel Soco

2
{"error": "invalid_token", "error_description": "Invalid Value"} ฉันพบสิ่งนี้ และได้รับ reg id ที่ไม่ถูกต้อง
อานันท์

159

POSTMAN: ส่วนขยายของ Google Chrome

ใช้บุรุษไปรษณีย์เพื่อส่งข้อความแทนเซิร์ฟเวอร์ การตั้งค่าบุรุษไปรษณีย์มีดังนี้:

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

เมื่อประสบความสำเร็จคุณจะได้รับ

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

3
ฉันคิดว่านี่เป็นวิธีที่สะอาดและปลอดภัยที่สุดในการทดสอบ GCM ขอบคุณ!
Bianca Daniciuc

12
ทำงานกับโพสต์ให้ฉัน! อย่าลืมมี "key =" ในส่วนหัวการอนุญาตไม่ใช่แค่ API_KEY
Raphael Royer-Rivard

3
@Raphael Royer-Rivard คุณช่วยชีวิตฉันขาด "key =" ในส่วนหัวการอนุญาต
Khurram Shehzad

3
มีคีย์สองสามอย่างที่คุณสามารถสร้างด้วย Google Developer Console ในกรณีที่คุณไม่ชัดเจนหากต้องการใช้กับบุรุษไปรษณีย์คุณต้องสร้าง "รหัสเซิร์ฟเวอร์"
Liangjun

3
"register_ids" ที่นี่คืออะไร จะหาได้ที่ไหน?
Himel Nag Rana

19

Pushwatchเป็นเครื่องทดสอบการแจ้งเตือนแบบพุช GCM และ APNS ออนไลน์ที่ใช้งานได้ฟรีที่พัฒนาโดยตัวเองใน Django / Python เนื่องจากฉันพบว่าตัวเองอยู่ในสถานการณ์ที่คล้ายกันในขณะที่ทำงานในหลายโครงการ สามารถส่งทั้งสองอย่างGCMและการAPNSแจ้งเตือนและยังรองรับข้อความ JSON สำหรับอาร์กิวเมนต์พิเศษ ต่อไปนี้เป็นลิงก์ไปยังผู้ทดสอบ

โปรดแจ้งให้เราทราบหากคุณมีคำถามหรือประสบปัญหาในการใช้งาน


1
กรุณาอธิบายการลงคะแนนของคุณ
Amyth

1
สิ่งที่ฉันต้องการทำงานได้อย่างสมบูรณ์ (ลองใช้บุรุษไปรษณีย์ซึ่ง sorta ใช้งานได้ แต่ไม่ได้ทำให้ข้อความปรากฏบนอุปกรณ์ของฉันเมื่อไม่ได้เปิดแอป .. )
Greywire

สวัสดีฉันได้รับข้อผิดพลาดนี้ในไซต์ของคุณ: "ข้อผิดพลาด HTTP 401: ส่งคีย์เซิร์ฟเวอร์ไม่ถูกต้อง (เดิม) หรือผู้ส่งไม่ได้รับอนุญาตให้ดำเนินการตามคำขอ" ไม่แน่ใจว่าจะทำอย่างไร? ฉันเพิ่งสร้าง Google Project และลองใช้รหัสโปรเจ็กต์และหมายเลขโปรเจ็กต์สำหรับ SenderID และเพิ่มไซต์ของคุณในส่วน "ยอมรับคำขอจากผู้อ้างอิง HTTP เหล่านี้ (เว็บไซต์)" ในการตั้งค่า Google API ขอแสดงความนับถือ Rasmus
Thylle

โปรดทราบว่า URL นี้ไม่รองรับอีกต่อไป: ตั้งแต่วันที่ 10 เมษายน 2018 Google ได้เลิกใช้งาน GCM แล้ว เซิร์ฟเวอร์ GCM และไคลเอนต์ API เลิกใช้งานแล้วและจะถูกลบออกทันทีที่ 11 เมษายน 2019 ข้อมูล GCM
Stinky Towel

7

บุรุษไปรษณีย์เป็นทางออกที่ดีและ php ก็เช่นกัน อย่างไรก็ตามเพื่อหลีกเลี่ยงการใส่ URL GCM และข้อมูลส่วนหัวทุกครั้งคุณสามารถใช้เครื่องมือทดสอบการแจ้งเตือน GCM ที่ดีนี้ได้


2
คุณสามารถใช้เครื่องทดสอบออนไลน์นี้ซึ่งรองรับทั้ง Android และ iOS เว็บไซต์ที่ใช้งานง่ายpushtry.com 1. เลือกไฟล์. p12 ของคุณ 2. ใส่ device token3 3. เลือกสภาพแวดล้อม Sandbox หรือการผลิต 4. ป้อนข้อความ 5. ส่ง
Arvind
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.