iOS,未触发('通知')的手机间隙推送插件

问题描述:

我正在使用(push-plugin)通过手机间隙向iPhone发送通知。iOS,未触发('通知')的手机间隙推送插件

我做了什么

  • 加推插件的PhoneGap项目
  • 我越来越设备令牌成功。
  • 我使用服务器(PHP)作为后端
  • 发送成功 通知APN但我无法收到通知

这是我工作的代码(PhoneGap的 - 客户端):

var push = PushNotification.init({ 
    ios: { 
     "alert": "true", 
     "badge": "true", 
     "sound": 'false' 
    } 
}); 
push.on('registration', function(data) { 
    console.log('your device token',data.registrationId); 
}); 
push.on('notification', function(data) { 
    console.log(('test'); 
    console.log(data.message); 
    console.log(data.title); 
    console.log(data.count); 
    console.log(data.sound); 
    console.log(data.image); 
    console.log(data.additionalData); 
}); 
push.on('error', function(e) { 
    console.log(e.message); 
}); 

这里是我的丝氨酸版本代码(PHP)

<?php 

    $deviceToken = '<my _device_token>'; 

// Put your private key's passphrase here: 
$passphrase = '<pass_phrase>'; 

// Put your alert message here: 
$message = "This is test notification"; 
$url = "http://google.com"; 

if (!$message || !$url) 
    exit('Example Usage: $php newspush.php \'Breaking News!\' \'https://google.com\'' . "\n"); 

//////////////////////////////////////////////////////////////////////////////// 

$ctx = stream_context_create(); 
stream_context_set_option($ctx, 'ssl', 'local_cert', 'abcdxyz.pem'); 
stream_context_set_option($ctx, 'ssl', 'passphrase', $passphrase); 

// Open a connection to the APNS server 
$fp = stream_socket_client(
    'ssl://gateway.sandbox.push.apple.com:2195', $err, 
    $errstr, 60, STREAM_CLIENT_CONNECT|STREAM_CLIENT_PERSISTENT, $ctx); 

if (!$fp) 
    exit("Failed to connect: $err $errstr" . PHP_EOL); 

echo 'Connected to APNS' . PHP_EOL; 

// Create the payload body 
$body['aps'] = array(
    'alert' => $message, 
    'sound' => 'default', 
    'link_url' => $url, 
    'category' => "NEWS_CATEGORY", 
); 

// Encode the payload as JSON 
$payload = json_encode($body); 

// Build the binary notification 
$msg = chr(0) . pack('n', 32) . pack('H*', $deviceToken) . pack('n', strlen($payload)) . $payload; 

// Send it to the server 
$result = fwrite($fp, $msg, strlen($msg)); 

if (!$result) 
    echo 'Message not delivered' . PHP_EOL; 
else 
    echo 'Message successfully delivered' . PHP_EOL; 

// Close the connection to the server 
fclose($fp); 

环境: corodova版本:6.1.2 的PhoneGap-插件推版本:1.6.2 iPhone版本:9.2

QUSETION为什么我移动设备无法收到通知?

我通过附加内部push.on('notification',function(){});

push.finish()下面的函数解决了上述问题

实施例:

push.on('notification', function(data) 
{ 
     console.log(data.message); 
     console.log(data.title); 

     push.finish(function() 
     { 
      console.log('finish successfully called'); 
     });  
});