APNS关于devicetoken的问题不适用于PHP中的主题和错误的设备令牌

APNS关于devicetoken的问题不适用于PHP中的主题和错误的设备令牌,php,cakephp-3.0,apns-php,Php,Cakephp 3.0,Apns Php,我正在尝试使用以下PHP客户端库集成用于VOIP的APN发送: composer需要edamov/pushok 我按照有关如何在$options数组中提供正确值的步骤进行了操作,在此我无法公开 当我尝试在以下代码中转储变量时: $options = [ 'key_id' => $keyid, // The Key ID obtained from Apple developer account 'team_id' => $teamid, // The Team ID

我正在尝试使用以下PHP客户端库集成用于VOIP的APN发送:

composer需要edamov/pushok

我按照有关如何在
$options
数组中提供正确值的步骤进行了操作,在此我无法公开

当我尝试在以下代码中转储变量时:

$options = [
    'key_id' => $keyid, // The Key ID obtained from Apple developer account
    'team_id' => $teamid, // The Team ID obtained from Apple developer account
    'app_bundle_id' => $bundleid, // The bundle ID for app obtained from Apple developer account
    'private_key_path' => $keyfile, // Path to private key
    'private_key_secret' => null // Private key secret
];

$authProvider = AuthProvider\Token::create($options);
$alert = Alert::create()->setTitle('Hello!');
$alert = $alert->setBody('First push notification');

$payload = Payload::create()->setAlert($alert);

//set notification sound to default
$payload->setSound('default');

$deviceTokens = [$token];

$notifications = [];
foreach ($deviceTokens as $deviceToken) {
    $notifications[] = new Notification($payload,$deviceToken);
}

$client = new \Pushok\Client($authProvider, $production = false);
$client->addNotifications($notifications);

$responses = $client->push(); // returns an array of ApnsResponseInterface (one Response per Notification)

var_dump($responses);
以下是我得到的:

array (size=1)
  0 => 
    object(Pushok\Response)[1564]
      private 'apnsId' => string '7EEEWAYS-BE3F-P0RK-J3RK-706FC55D5ABS' (length=36)
      private 'deviceToken' => string 'wlo83peah2f2ql686sfitzasro2wghri85x2l128t7gqysoba9jaezsve0y0nvpm' (length=64)
      private 'statusCode' => int 400
      private 'errorReason' => string 'DeviceTokenNotForTopic' (length=22)
      private 'error410Timestamp' => string '' (length=0)
尽管我认为
$options
数组中提供的值是正确的,但我想询问或寻求帮助,了解我为什么会出现
HTTP400
DeviceTokenNotForTopic
错误

另外,我刚刚发现,当我从下面更改$client的第二个参数值时:

$client = new \Pushok\Client($authProvider, $production = false);
$client->addNotifications($notifications);
对此

$client = new \Pushok\Client($authProvider, $production = true);
$client->addNotifications($notifications);
我收到
BadDeviceToken
HTTP400
错误:

array (size=1)
  0 => 
    object(Pushok\Response)[1564]
      private 'apnsId' => string '733TWAYS-S0UR-F1SH-CH0W-706FC55D5ABS' (length=36)
      private 'deviceToken' => string 'wlo83peah2f2ql686sfitzasro2wghri85x2l128t7gqysoba9jaezsve0y0nvpm' (length=64)
      private 'statusCode' => int 400
      private 'errorReason' => string 'BadDeviceToken' (length=14)
      private 'error410Timestamp' => string '' (length=0)

提前感谢。

我不是PHP而是iOS开发人员,对我来说,您提供的证书似乎与“主题”(即您的应用程序包ID)无关。在Apple Dev.Portal中创建APNS密钥时,您确定选择了正确的捆绑包标识符吗?此外,请确保在任何地方(开发门户、PHP代码、证书……)都选择相同的环境(沙盒产品)——这曾经是我的问题。Hello@mmika1000,我将询问我的同事他给我的详细信息。谢谢大家,API和iOS应用程序中设置的环境都设置为开发。我们有两个iOS移动设备,当我们在第一个设备中测试APNS(VoIP)时,它工作,而第二个设备返回HTTP 400
BadDeviceToken
。怎么可能另一台设备工作而另一台设备不工作?应用程序的部署方式是否完全相同?您是否知道DeviceToken会随着时间的推移而变化,并且每次启动应用程序时都必须从APN请求它们?也许对你也有帮助