【发布时间】:2016-01-05 14:14:40
【问题描述】:
我正在尝试将 swift 发布的设备令牌存储到 php 变量中以供将来参考(例如检查令牌是否已存在于数据库中)。
这是我的 Swift 代码:
func application(application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: NSData) {
let sampleToken = deviceToken.hexString()
let session = NSURLSession.sharedSession()
let postBody = NSString(format: "token=\(sampleToken)")
let endBody = NSURL(string: "http://www.samplesite.com/sub1/sub2/testing.php")
let request = NSMutableURLRequest(URL: endBody!, cachePolicy: NSURLRequestCachePolicy.ReloadIgnoringLocalCacheData, timeoutInterval: 30.0)
request.HTTPMethod = "POST";
request.HTTPBody = postBody.dataUsingEncoding(NSUTF8StringEncoding)
request.setValue("application/x-www-form-urlencoded", forHTTPHeaderField: "Content-Type")
let dataTask = session.dataTaskWithRequest(request) { (data:NSData?, response:NSURLResponse?, error:NSError?) -> Void in
if data != nil {
print("data: \(response)")
} else {
print("failed: \(error!.localizedDescription)")
}
}
dataTask.resume()
}
这是我用于存储令牌的 php 文件:
<?php
$token = $_REQUEST['token'];
var_dump(json_decode($token)); //returns null
var_dump(json_decode($token, true)); //returns null
include_once("includes/dbi_connect.php");
$sql1 = "INSERT INTO tbs_main . userTokenInfo (token) VALUES ('".$token."')";
$result = mysqli_query($conn, $sql1);
?>
令我困惑的是,令牌仍然记录在数据库中,但无法显示。我在这里遗漏了一些东西,我真的不知道在哪里和什么。设备令牌的传递和转换是否有问题?还是在php端?
更新
我尝试按照 Ammo 的建议使用 var_dump('$token');,但它只返回了一个 null 值
【问题讨论】: