2016-03-23 15 views
5

Tôi đang cố đánh thức điện thoại của mình hoặc nhấp nháy bằng GCM. Tôi nhận được các tin nhắn tốt nhưng không có sự khác biệt trong việc thiết lập một ưu tiên cao hoặc không có gì cả. Tôi đang sử dụng một hd maxx razr để kiểm tra. có điều gì tôi thiếu ở đây không?Android - tin nhắn có mức độ ưu tiên cao với nhắn tin qua đám mây của google (sử dụng corona sdk)

<?php 
// API access key from Google API's Console 
define('API_ACCESS_KEY', 'blee'); 

// prep the bundle 
$msg = array 
(
    'body' => 'this is my nice body', 
    'sound' => 'misc/androidnotification.mp3', 

    'custom' => array(
     'route' => '/beee' 
    ) 
); 
$fields = array 
(
    'collapse_key' => 'test', 
    "time_to_live" => 0, 
    'priority' => 'high', 
    'to' => 'mykey',  
    '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; 
+0

Việc tạo đối tượng JSON trong PHP thường tương tự trong việc tạo mảng? Nội dung của mảng '$ fields' có vẻ tốt, nó chỉ được chỉ ra trong [documentation] (https://developers.google.com/cloud-messaging/http-server-ref#send-downstream) mà nó phải là JSON . [Đặt mức độ ưu tiên] (https://developers.google.com/cloud-messaging/concept-options#setting-the-priority-of-a-message) thành 'high' sẽ đánh thức thiết bị đang ngủ. Đảm bảo rằng GCM gửi thông báo ngay lập tức – adjuremods

+0

tiêu đề là "application/json" sẽ mã hóa nó thành json. Tôi đang làm cho ứng dụng này bằng cách sử dụng SDK corona vì vậy tất cả các mã java thông thường bạn muốn chạy trong một ứng dụng Android bản địa là không có sẵn cho tôi. không chắc chắn nếu tôi cần phải chạy một số mã thông báo trong ứng dụng chính nó để thực hiện điều này .. – hamobi

Trả lời

3

Từ hai liên kết sau

GCM Priority

Optimizing for Doze and App Standby

bạn có thể suy ra rằng cho thông điệp ưu tiên cao

GCM nỗ lực để cung cấp các thông điệp ưu tiên cao ngay lập tức, cho phép phím G Dịch vụ CM để đánh thức thiết bị ngủ khi có thể và mở kết nối mạng với máy chủ ứng dụng của bạn.

và cho thông điệp bình thường

thông điệp ưu tiên bình thường sẽ không kết nối mạng mở trên một thiết bị ngủ, và giao hàng của họ có thể bị trì hoãn để bảo tồn pin.

và như bạn có thể nhìn thấy từ câu trả lời cho những điều sau question

bạn không bao giờ có thể chắc chắn rằng thiết bị Android đang ở chế độ ngủ cho phiên bản Android dưới Marshmallow, cho các thiết bị chạy Marshmallow hoặc cao hơn có chế độ doze .

Vì vậy, có được một thiết bị chạy Marshmallow hoặc lớn hơn và đặt nó vào chế độ liều bằng cách chạy lệnh sau

$ adb shell dumpsys battery unplug 
$ adb shell dumpsys deviceidle step 

Bạn có thể cần phải chạy lệnh thứ hai nhiều hơn một lần. Lặp lại cho đến khi trạng thái thiết bị chuyển sang chế độ chờ.

Bây giờ, hãy thử gửi thông báo đẩy có mức ưu tiên cao và mức độ ưu tiên thông thường. Khi mức độ ưu tiên của thư cao, thông báo sẽ được nhận và tương tự khi không đặt mức ưu tiên hoặc đặt thành thông thường, thông báo sẽ được gửi cùng với một số độ trễ hoặc khi bạn đánh thức thiết bị.

+0

cảm ơn cho câu trả lời nhưng như tôi đã nói tôi đang sử dụng một hd maxx razr. công ty của tôi không cung cấp cho tôi bất kỳ thiết bị Android nào để thử nghiệm trên .. sử dụng một thiết bị cũ: (tôi nghĩ thats android 4.4.2 – hamobi

+0

Bạn có thể sử dụng trình giả lập với hình ảnh Google Api cho mục đích thử nghiệm –

Các vấn đề liên quan