2016-09-07 27 views
11

Tôi đã thiết lập tất cả các thông báo đẩy cần thiết được mô tả here.Mã thông báo thiết bị đăng ký Ionic mới

Tôi đăng ký thiết bị khi khởi động như:

// register for pushio 
    $ionicPush.register().then(function(t) { 
     return $ionicPush.saveToken(t, {ignore_user:true}); 
    }).then(function(t) { 
     console.log('Token saved:', t.token); 
    }); 

Các thiết bị token được đăng nhập "Mã lưu: xxxxthetokenxxxx".

Bây giờ tôi đang gửi đẩy từ CURL và bảng điều khiển Ionic.io. Trạng thái (được chọn bằng CURL) của tin nhắn là 200 và không có lỗi. Vì vậy, thông báo đẩy được gửi:

{"meta": {"request_id": "8d9c69ce-b66c-4002-8cb3-f91c57505b0f", "version": "2.0.0-beta.0", "status": 200}, "data": []} 

Nhưng thiết bị của tôi không nhận được thông báo. Tôi nghĩ rằng điều này là do hàm saveToken(). saveToken() lưu mã thông báo ở đâu?

Có ai có manh mối về cách giải quyết vấn đề này không?

UPDATE: tôi đang sử dụng mã này để gửi push:

<?php $curl = curl_init(); 
$token = "mytoken"; 

curl_setopt_array($curl, array(

    CURLOPT_URL => "https://api.ionic.io/push/notifications", 
    CURLOPT_RETURNTRANSFER => true, 
    CURLOPT_ENCODING => "", 
    CURLOPT_MAXREDIRS => 10, 
    CURLOPT_TIMEOUT => 30, 
    CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, 
    CURLOPT_CUSTOMREQUEST => "POST", 
    CURLOPT_POSTFIELDS => ' 

    { 
    "tokens": "bbc654c496abc2dc42a40941ac944f0a8aeb0d5b227d523e335dbd51b71ed646", 
    "profile": "getto", 
    "notification": { 
     "message": "Hello World!" 
    } 
    }', 
    CURLOPT_HTTPHEADER => array(
    "Authorization: Bearer $token", 
    "Content-Type: application/json" 
), 
)); 

$response = curl_exec($curl); 
$err = curl_error($curl); 

curl_close($curl); 

if ($err) { 
    echo "cURL Error #:" . $err; 
} else { 
    echo $response; 
} ?> 

EDIT: Điều kỳ lạ là, rằng trên Android token thiết bị không được đăng ký.

+0

Bạn không phải lưu mã thông báo trên thiết bị, bạn sẽ phải chuyển mã đó vào API. –

+1

Tôi gọi $ ionicPush.saveToken(). Điều này tiết kiệm mã thông báo cho cơ sở dữ liệu Ionic !? Và khi tôi gửi một đẩy từ bảng điều khiển Ionic.io, mã thông báo đã lưu này sẽ được chuyển đến API mà bảng điều khiển ionic.io sử dụng. Tôi có đúng không? – m1crdy

+0

Hoặc tôi có cần tự lưu mã thông báo không? Nếu tôi thử trên thiết bị và gửi thông báo tới mã thông báo này, câu trả lời ở trên sẽ được hiển thị. Nhưng không có tin nhắn được gửi. Tôi đã cập nhật câu hỏi với mã của tôi – m1crdy

Trả lời

0

Khởi tạo dịch vụ và đăng ký thiết bị của bạn trong chức năng chạy của mô-đun. Bạn sẽ cần mã thông báo thiết bị được người dùng đăng ký để gửi thông báo cho người dùng.

$ionicPush.init({ 
    debug: true, 
    onNotification: function (notification) { 
    console.log('token:', notification.payload); 
    }, 
    onRegister: function (token) { 
    console.log('Device Token:', token); 
    $ionicPush.saveToken(token); // persist the token in the Ionic Platform 
    } 
}); 

$ionicPush.register(); 

Ionic Push cho phép bạn tạo thông báo đẩy được nhắm mục tiêu thông qua bảng điều khiển (ionic.io). Bạn cũng có thể gửi thông báo từ máy chủ theo định dạng dưới đây.

curl -X POST -H "Authorization: Bearer API_TOKEN" -H "Content-Type: application/json" -d '{ 
    "tokens": ["DEVICE_TOKEN"], 
     "profile": "PROFILE_TAG", 
     "notification": { 
       "message": "Hello World!" 
     "android": { 
        "title": "Hi User", 
        "message": "An update is available for your App", 
        "payload": { 
         "update": true 
        } 
      } 
    } }' "https://api.ionic.io/push/notifications" 
+0

Đó là quyền. Cảm ơn. Nhưng các thẻ được lưu ở đâu? Và làm thế nào để lấy chúng bên trong curl? Tôi có cần phải tự lưu mã thông báo trong cơ sở dữ liệu bên ngoài không? – m1crdy

+0

Bạn có thể gửi thông báo được nhắm mục tiêu đến người dùng của mình bằng tin nhắn tùy chỉnh cho từng người dùng và bất kỳ lúc nào. Tham khảo https://docs.ionic.io/services/push/#summary. Nếu bạn muốn thực hiện bất kỳ điều nào ở trên thì bạn phải lưu mã thông báo của tất cả người dùng dựa vào id duy nhất của họ trong bất kỳ cơ sở dữ liệu nào. Nhưng nếu yêu cầu của bạn chỉ gửi thông báo số lượng lớn đến tất cả người dùng của bạn và chỉ theo cách thủ công, thì bạn có thể tạo thông báo trong Trang tổng quan bằng cách điều hướng đến Đẩy ›Thông báo mới. Tham khảo https://docs.ionic.io/services/push/#sending-pushes –

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