0

我一直在尝试过去多久才弄清楚如何从沙箱APNS到生产APNS。以下是用于向我的应用发送通知的PHP代码。推送通知用于开发而不是生产

$passphrase = 'SomethingStrong'; 

$ctx = stream_context_create(); 
stream_context_set_option($ctx, 'ssl', 'local_cert', $_SERVER['DOCUMENT_ROOT'] . '/ck.pem'); 
stream_context_set_option($ctx, 'ssl', 'passphrase', $passphrase); 

$fp = stream_socket_client(
    'ssl://gateway.sandbox.push.apple.com:2195', $err, 
    $errstr, 60, STREAM_CLIENT_CONNECT|STREAM_CLIENT_PERSISTENT, $ctx); 

if (!$fp) 
{ 
    //return json_encode(array('response' => 'connection_fail')); 
} 

$body['aps'] = array(
    'alert' => $message, 
    'sound' => 'default' 
    ); 

$payload = json_encode($body); 
$msg  = chr(0) . pack('n', 32) . pack('H*', $deviceToken) . pack('n', strlen($payload)) . $payload; 

$result  = fwrite($fp, $msg, strlen($msg)); 

if (!$result) 
    return json_encode(array('response' => 'unsuccessful')); 
else 
    return json_encode(array('response' => 'successful')); 

fclose($fp); 

这整个事情的作品时,我把网址ssl://gateway.sandbox.push.apple.com:2195,但是当我,当我将其更改为ssl://gateway.push.apple.com:2195没有通知来通过它发送成功我的应用程序,但PHP输出。

我正在使用开发证书进行代码签名。

我是新来的通知,并从未使用过他们,所以很抱歉,如果我做的事情真的很明显。谢谢。

+1

您需要设置production.pem文件来发送生产通知。 –

+0

@Alec Check [this](http://www.raywenderlich.com/32960/apple-push-notification-services-in-ios-6-tutorial-part-1)用于证书生成。 – Yash

+0

@PramodTapaniya我重新做了证书过程,但它仍然没有做任何事情。 – Alec

回答

1

有两件事情,你需要确认:

  • 你生成你的构建与发行配置文件
  • 您使用的生产PEM文件从你的PHP服务器发送PUSH

Push Notification Certificate

+0

我无法使用发布配置文件构建并在手机上运行它。我怎么做?我只能运行开发配置文件。 – Alec

+0

你应该可以做到这一点。当你使用Xcode与你的应用程序一起运行你的应用程序配置文件时,它会被安装,但不会第一次运行。从主屏幕再次打开您的应用程序,并安装发行版本。 或者您可以简单地创建一个带分布配置文件的ipa文件,并将其安装到您的设备中。 或者如果您遇到其他错误,请确认。 –

+0

我不断收到此...“应用程序的代码签名授权文件中指定的权利与您的供应配置文件中指定的权利不匹配(0xE8008016)。” – Alec

0

您正在为生产设置正确的ssl套接字ssl://gateway.push.apple.com:2195

检查已上传到服务器的证书或ck.pem文件应该是生产。

同时检查供应配置文件您选择构建应该是分布配置文件

+0

我无法使用发布配置文件构建并在手机上运行它。我怎么做?我只能运行开发配置文件。 – Alec

+0

http://stackoverflow.com/questions/25056144/xcode-6-how-to-pick-signing-certificate-provisioning-profile-for-ad-hoc-distri – Rahul

0

所有设置都正确,但我的Ad Hoc配置文件和代码签名的方式有问题。现在一切都很好!谢谢!

相关问题