2016-09-07 59 views
11

我已经设置了所有必要的推送通知描述here新的离子推送注册设备令牌

我注册设备上启动,如:

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

设备令牌登录“令牌保存:xxxxthetokenxxxx”。

现在我发送推送从CURL和Ionic.io仪表板。消息的状态(用CURL检查)是200,没有错误。所以发送推送通知:

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

但是我的设备没有收到通知。我认为这是由于saveToken()功能。 saveToken()保存令牌在哪里?

有没有人有线索如何解决这个问题?

UPDATE: I'm使用此代码发送推送:

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

编辑:奇怪的是,在Android设备令牌未注册。

+0

您不必在设备上保存令牌,您必须将其传递给API。 –

+1

我打电话给$ ionicPush.saveToken()。这将令牌保存到离子数据库!当我从Ionic.io仪表板发送推送信息时,此保存的标记应该传递到ionic.io仪表板使用的API。我对吗? – m1crdy

+0

或者我需要自己保存令牌吗?如果我在设备上尝试并向此令牌发送通知,则会显示上述回复。但没有消息传递。我用我的代码更新了这个问题 – m1crdy

回答

0

初始化服务并将您的设备注册到模块的运行功能中。您需要由用户注册的设备令牌将通知发送给用户。

$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允许您通过仪表板(ionic.io)创建目标推送通知。您也可以使用以下格式从服务器发送通知。

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

没错。谢谢。但是令牌保存在哪里?以及如何在curl中检索它们?我需要将令牌自己保存在外部数据库中吗? – m1crdy

+0

您可以随时向个人用户发送有针对性的通知,并为用户提供自定义消息。 请参阅https://docs.ionic.io/services/push/#summary。 如果你想要做上述任何一项,那么你必须将所有用户的标记保存在任何数据库中的唯一ID上。 但是,如果您的要求只是向所有用户发送批量通知,并且只能手动发送,那么您可以通过导航到推送>新通知来在仪表板中创建通知。 请参阅https://docs.ionic.io/services/push/#sending-pushes –