1

如何在设备注册时检索设备 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 数据库,我们称之为 smartmandb.tokentable

我修改了 initPushwoosh() 以使用 Ajax 将令牌发送给 MySQL(见下文)我在 MySQL 上什么也没收到。我是否发送了正确的令牌参数(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);
?>

任何帮助将不胜感激

4

2 回答 2

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. 最后一件事。参数 var 应该这样初始化: var param = "Token="+pushToken;

希望这会有所帮助。

于 2012-12-01T07:02:27.607 回答
0

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

于 2013-03-27T17:45:48.217 回答