Android: Thử nghiệm Thông báo đẩy trực tuyến (Google Cloud Messaging) [đã đóng]


99

Cập nhật: GCM không được dùng nữa, hãy sử dụng FCM

Tôi đang triển khai Google Cloud Messaging trong ứng dụng của mình. Mã máy chủ chưa sẵn sàng và trong môi trường của tôi do một số hạn chế của tường lửa, tôi không thể triển khai máy chủ thử nghiệm cho thông báo đẩy. Những gì tôi đang tìm kiếm là một máy chủ trực tuyến sẽ gửi một số thông báo thử nghiệm đến thiết bị của tôi để kiểm tra việc triển khai ứng dụng khách của tôi.


Bạn đã xóa bài đăng khác đó là lý do tại sao tôi viết ở đây :-) NotificationListenerService đã được thêm vào api 18 ... Chỉ cần lưu trữ id trong SharedPreferences dưới dạng int mảng và thực hiện một số logic để chceck kích thước của mảng nếu sau khi thêm id mới lớn hơn bạn cần lấy phần tử đầu tiên và hủy bỏ ...
Selvin

1
bạn có thể kiểm tra bằng cách sử dụng pushtry.com
Arvind

Câu trả lời:


167

Tìm thấy một cách rất dễ dàng để làm điều này.

Mở http://phpfiddle.org/

Dán tập lệnh php sau vào hộp. Trong tập lệnh php API_ACCESS_KEY, hãy đặt id thiết bị được phân tách bằng dấu hôn.

Nhấn F9 hoặc nhấp vào Chạy.

Chúc vui vẻ ;)

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

Đối với FCM, url google sẽ là: https://fcm.googleapis.com/fcm/send

Đối với FCM v1 url google sẽ là: https://fcm.googleapis.com/v1/projects/YOUR_GOOGLE_CONSOLE_PROJECT_ID/messages:send

Lưu ý: Trong khi tạo Khóa truy cập API trên bảng điều khiển dành cho nhà phát triển của Google, bạn phải sử dụng 0.0.0.0/0 làm địa chỉ ip. (Với mục đích thử nghiệm).

Trong trường hợp nhận được phản hồi Đăng ký không hợp lệ từ máy chủ GCM, vui lòng kiểm tra lại tính hợp lệ của mã thông báo thiết bị của bạn. Bạn có thể kiểm tra tính hợp lệ của mã thông báo thiết bị của mình bằng cách sử dụng url sau:

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

Một số mã phản hồi:

Sau đây là mô tả về một số mã phản hồi bạn có thể nhận được từ máy chủ.

{ "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
Không hẳn :) Đối với mục đích thử nghiệm, bạn có thể sử dụng ip 0.0.0.0/0. nó sẽ hoạt động.
Adnan

4
Tôi nhận được mỗi lần (với phím api và id thiết bị: lỗi ":" InvalidRegistration
Leandro

4
Vui lòng tạo lại API KEYsau, vì không quá an toàn để đưa chìa khóa của bạn cho họ.
Flash Thunder

6
tôi tiếp tục nhận được Lỗi trái phép 401. bất kỳ ý tưởng tại sao?
Razel Soco

2
{"error": "invalid_token", "error_description": "Giá trị Không hợp lệ"} tôi đã tìm thấy cái này. và nhận được id đăng ký không hợp lệ.
Anand

159

POSTMAN: Một tiện ích mở rộng của google chrome

Sử dụng người đưa thư để gửi tin nhắn thay vì máy chủ. Cài đặt người đưa thư như sau:

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

thành công bạn sẽ nhận được

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

3
Tôi nghĩ đây là giải pháp sạch sẽ và an toàn nhất để kiểm tra GCM. Cảm ơn!
Bianca Daniciuc

12
Đã làm việc với một BÀI ĐĂNG cho tôi! Cũng đừng quên để có "key =" trong tiêu đề ủy quyền và không chỉ là API_KEY
Raphael Royer-Rivard

3
@Raphael Royer-Rivard bạn là người cứu rỗi cuộc sống, tôi đã thiếu "key =" trong tiêu đề Ủy quyền
Khurram Shehzad vào

3
Bạn có thể tạo một số khóa bằng Google Developer Console. Đề phòng trường hợp bạn chưa rõ, để sử dụng với người đưa thư, bạn cần tạo "Khóa máy chủ".
Liangjun

3
"Register_ids" ở đây là gì? tìm chúng ở đâu?
Himel Nag Rana,

19

Pushwatch là một trình kiểm tra thông báo đẩy GCM và APNS trực tuyến miễn phí do chính tôi phát triển bằng Django / Python vì tôi đã từng gặp trường hợp tương tự khi làm việc trên nhiều dự án. Nó có thể gửi cả hai GCMAPNSthông báo và cũng hỗ trợ các thông báo JSON cho các đối số bổ sung. Sau đây là các liên kết đến người thử nghiệm.

Vui lòng cho tôi biết nếu bạn có bất kỳ câu hỏi nào hoặc gặp vấn đề khi sử dụng nó.


1
Vui lòng giải thích phản đối của bạn.
Amyth

1
Chỉ là những gì tôi cần, hoạt động hoàn hảo (thử một trong những người đưa thư, mà sorta làm việc, nhưng didnt nguyên nhân thông điệp xuất hiện trên điện thoại của mình khi ứng dụng của tôi không được mở ..)
Greywire

Xin chào Amyth, tôi gặp lỗi này trên trang web của bạn: "Lỗi HTTP 401: Khóa máy chủ (cũ) được phân phối không hợp lệ hoặc Người gửi không được phép thực hiện yêu cầu." Không chắc sẽ làm gì? Tôi vừa tạo Dự án Google và thử sử dụng ID dự án và Số dự án cho SenderID và thêm trang web của bạn vào "Chấp nhận yêu cầu từ các liên kết giới thiệu HTTP này (trang web)" trong cài đặt API của Google. Trân trọng Rasmus
Thylle,

Lưu ý rằng URL này không còn được hỗ trợ nữa: Kể từ ngày 10 tháng 4 năm 2018, Google đã ngừng sử dụng GCM. Máy chủ GCM và API ứng dụng không được dùng nữa và sẽ bị xóa ngay sau ngày 11 tháng 4 năm 2019. Thông tin GCM
Stinky Towel

7

Postman là một giải pháp tốt và php fiddle cũng vậy. Tuy nhiên, để tránh đưa URL GCM và thông tin tiêu đề vào mọi lúc, bạn cũng có thể sử dụng Công cụ kiểm tra thông báo GCM tiện lợi này


2
Bạn có thể sử dụng trình kiểm tra trực tuyến này hỗ trợ cả Android và iOS. Dễ dàng sử dụng trang web đơn giản pushtry.com 1. Chọn bạn đuôi .p12 nộp 2. Nhập thiết bị token3 3. Chọn môi trường Sandbox hoặc sản xuất 4. Nhập nhắn 5. Gửi
Arvind
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.