如何在设备注册时检索设备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);
?>
任何帮助将不胜感激
答案 0 :(得分:1)
查看代码后,我认为它包含一些错误。 所以,让我们尝试解决它们:
首先。在PushNotification.js之前是否包含jquery js脚本?如果没有,“$ .ajax”将不会被执行。
另一件事。 ajax默认类型是GET,你在php代码中使用POST。 你根本不使用json。所以你的代码应该转换成像这样的东西
$.ajax({
type: "POST",
async: true,
url: url,
data: params,
success: function (result) {
// todo
},
error: function (result) {
// todo
}
});
最后一件事。 param var应该像这样初始化: var param =“Token =”+ pushToken;
希望这会有所帮助。
答案 1 :(得分:0)
我遇到了同样的问题,我更新了Pushwoosh.jar,它对我有用。 :)