Phonegap / Pushwoosh Android检索设备ID /令牌

时间:2012-11-29 19:29:57

标签: android cordova push-notification token

如何在设备注册时检索设备ID /令牌?我正在使用Phonegap Pushwoosh示例,它工作正常。但我无法弄清楚如何在设备注册initPushwoosh中检索令牌。

我不是专业的程序员。任何帮助将不胜感激。

我有一个初始化的index.html <body onload="init();">

在main.js

function init() { 
  document.addEventListener("deviceready", deviceInfo, true);
  document.addEventListener("deviceready", initPushwoosh, true);
}

在PushNotification.js

function initPushwoosh()
{
    var pushNotification = window.plugins.pushNotification;
// CHANGE projectid & appid
pushNotification.registerDevice({ projectid: "xxxxxxx", appid : "xxxxxxxx" },
        function(status) {
          var pushToken = status;
          console.warn('push token: ' + pushToken);
        },
        function(status) {
          console.warn(JSON.stringify(['failed to register ', status]));
        });

document.addEventListener('push-notification', function(event) {
                var title = event.notification.title;
                var userData = event.notification.userdata;

                if(typeof(userData) != "undefined") {
           console.warn('user data: ' + JSON.stringify(userData));
        }

        navigator.notification.alert(title);
      });

 }

第一部分是.registerDevice,令牌可能是pushToken,但我无法弄清楚如何从这个函数中检索它! 最好将它发送到MySQL数据库,然后将其称为smartphonedb.tokentable

我修改了initPushwoosh()以使用Ajax将令牌发送给MySQL(见下文)我在MySQL上没有收到任何内容。我发送了正确的Token param(pushToken)吗?

 function initPushwoosh()
{
var pushNotification = window.plugins.pushNotification;
// CHANGE projectid & appid
pushNotification.registerDevice({ projectid: "xxxxxx", appid : "xxxxxxx"      },
                                function(status) {
                                    var     pushToken = status;
                                      console.warn('push token: ' + pushToken);
// start my ajax to insert token to mysql
 var param ={Token: pushToken};                                 
  $.ajax({                                      
url: 'http://luxurylebanon.com/offeratlive/apitoken.php', data: param, dataType: 'json',  success: function(result)  
{
if(result.success == false) 
{  
    alert(failed)
} 
else { 
     alert(success)
    }  
  }
  });
// end ajax                                         
                                },
                                function(status) {
                                    console.warn(JSON.stringify(['failed to register ', status]));
                                });

document.addEventListener('push-notification', function(event) {
                            var title = event.notification.title;
                            var userData = event.notification.userdata;

                            if(typeof(userData) != "undefined") {
                                console.warn('user  data: ' + JSON.stringify(userData));
                            }

                             navigator.notification.alert(title);
                          });

}

The PHP apitoken.php

<?php
$username="xxxxxxx";
$password="xxxxxxxxxxxx";
$database="offeratdb";
$server="offeratdb.db.xxxxxxxxx.com";
$connect = mysql_connect($server,$username,$password)or die('Could not connect: ' . mysql_error());

@mysql_select_db($database) or die('Could not select database ('.$database.') because of : '.mysql_error());


$vtoken= $_POST['Token'];


// Performing SQL query
    $query = "INSERT INTO `tokentable` (`thetoken`) VALUES ('$vtoken')";
    $result = mysql_query($query)or die('Query failed: ' . mysql_error());

echo $vtoken;


// We will free the resultset...
mysql_free_result($result);

// Now we close the connection...
mysql_close($connect);
?>

任何帮助将不胜感激

2 个答案:

答案 0 :(得分:1)

查看代码后,我认为它包含一些错误。 所以,让我们尝试解决它们:

  1. 首先。在PushNotification.js之前是否包含jquery js脚本?如果没有,“$ .ajax”将不会被执行。

  2. 另一件事。 ajax默认类型是GET,你在php代码中使用POST。 你根本不使用json。所以你的代码应该转换成像这样的东西

    $.ajax({
        type: "POST",
        async: true,
        url: url,
        data: params,
        success: function (result) {
            // todo
        },
        error: function (result) {
            // todo
        }
    });
    
  3. 最后一件事。 param var应该像这样初始化: var param =“Token =”+ pushToken;

  4. 希望这会有所帮助。

答案 1 :(得分:0)

我遇到了同样的问题,我更新了Pushwoosh.jar,它对我有用。 :)