Apple传递存折:
我已经实现了传递本身,并希望进行更新等通信。 对于服务器端(webserviceUrl),我使用的是我调整过的代码。我对php不是很有经验,所以任何帮助都会很棒!
在安装传递时,在控制台上,它与授权代码匹配,似乎正在运行,但下面的代码没有更新我的表。
表格:
设备 {DeviceID,push_token}为空 -
注册 {device_id,pass_id,pass_type}为空
还有一个表通过,其中包含序列号,PassID,authtoken和其他有关传递的信息 - 完整
<?php
$servername = "hostname";
$username = "user";
$password = "pass";
$dbname = "db";
// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
$request = explode("/", substr(@$_SERVER['REQUEST_URI'], 1));
if (strtoupper($_SERVER['REQUEST_METHOD']) === "POST"
&& isset($_SERVER['HTTP_AUTHORIZATION'])
&& strpos($_SERVER['HTTP_AUTHORIZATION'], 'ApplePass') === 0
&& $request[2] === "devices"
&& $request[4] === "registrations") {
$auth_key = str_replace('ApplePass ', '', $_SERVER['HTTP_AUTHORIZATION']);
$device_id = $request[3];
$pass_id = $request[5];
$serial = $request[6];
// Catch the JSON post and decode it
$dt = @file_get_contents('php://input');
$device_token = json_decode($dt);
$device_token = $device_token->pushToken;
$sql="INSERT INTO Registrations (device_id, pass_id, pass_type) VALUES ('".$device_id."', '".$pass_id."', '".$serial."')";
if ($conn->query($sql) === TRUE) {
echo "y";
} else {
echo "Error: " . $sql . "<br>" . $conn->error;
$sql="INSERT INTO Devices (DeviceID, push_token) VALUES ( '".$device_id."', '".$device_token."')";
if ($conn->query($sql) === TRUE) {
echo "y";
} else {
echo "Error: " . $sql . "<br>" . $conn->error;
mysql_query($sql,$link);
exit;
}
}}
?>
此时任何输入都会非常有用。
答案 0 :(得分:0)
为遇到这种情况的人解决了问题。我重定向到webserviceurl是不正确的。这是我放入.htaccess的内容 - 这意味着我的代码基本上没有划分网址信息。
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !index.php
RewriteRule .* index.php?url=$0 [QSA,L]
RewriteRule .* - [env=HTTP_AUTHORIZATION:%{HTTP:Authorization},last]