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データベースに送信して、smartphonedb.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. そして最後に。param var は次のように初期化する必要があります: var param = "Token="+pushToken;

これが役立つことを願っています。

于 2012-12-01T07:02:27.607 に答える
0

私は同じ問題を抱えていました.Pushwoosh.jarを更新しましたが、うまくいきました. :)

于 2013-03-27T17:45:48.217 に答える