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配置文件和代碼簽名的方式有問題。現在一切都很好!謝謝!

相關問題