2010-02-18 41 views
7

Tôi đang cố thêm thông báo đẩy vào ứng dụng của mình. Tôi đang sử dụng hồ sơ quảng cáo đặc biệt. AppID của tôi không có ký tự đại diện. Tôi đang sử dụng đoạn code sau ...Dịch vụ thông báo đẩy của Apple APNS - Thông báo không đến

$deviceToken="****";masked 
$time = time(); 

$apnsHost = 'gateway.sandbox.push.apple.com'; 

$apnsPort = 2195; 
$apnsCert = 'apns-dev-maui.pem'; 

$streamContext = stream_context_create(); 
stream_context_set_option($streamContext, 'ssl', 'local_cert', $apnsCert); 

$apns = stream_socket_client('ssl://' . $apnsHost . ':' . $apnsPort, $error, $errorString, 2, STREAM_CLIENT_CONNECT, $streamContext); 
if($apns) 
{ 
echo "Connection Established<br/>"; 
$payload = array(); 
$payload['aps'] = array('alert' => 'It works!!', 'badge' => 1, 'sound' => 'default'); 
$payload = json_encode($payload); 
$apnsMessage = chr(0) . chr(0) . chr(32) . pack('H*', str_replace(' ', '', $deviceToken)) . chr(0) . chr(strlen($payload)) . $payload; 

     print "sending message :" . $apnsMessage . "<br/>"; 
     print "sending payload :" . $payload . "<br/>"; 
     fwrite($apns, $apnsMessage); 

} 
else 
{  
     echo "Connection Failed"; 
     echo $errorString; 
     echo $error; 
} 
// socket_close($apns); 
fclose($apns); 

Không có kết nối lỗi được tạo ra. Không có gì đến từ kênh phản hồi.

Tôi nhận thiết bịTokens từ bảng điều khiển tổ chức và lệnh NSLog. Các thông báo cho ứng dụng này đang hiển thị trong menu cài đặt của tôi.

Tôi có 3G ATT và 2G cũ mà tôi sử dụng làm iPod. Không làm việc.

Không có lỗi để xem xét, tôi hết ý tưởng. Bất cứ ai có bất kỳ cái nhìn sâu sắc?

Jennifer

+0

Chúng tôi có thể sử dụng hai tệp .pem khác nhau (tệp chứng nhận) để gửi thông báo đẩy không? Điều đó có thể không? –

Trả lời

24

Cuối cùng tôi đã tìm ra. Tôi đã sử dụng Sandbox với một hồ sơ cung cấp AdHoc. Ad Hoc rõ ràng được coi là sản xuất thay vì phát triển. Tôi đã tạo chứng chỉ sản xuất đẩy, cài đặt nó và thì đấy! Nó hoạt động.

+1

Cảm ơn. Đã định đi bonkers hoàn toàn! :) –

+1

Mups bạn có thể đánh dấu câu trả lời của riêng bạn là chính xác, và thực sự nên trong trường hợp này :) – powerj1984

6

Câu trả lời của Mups là đúng. Tôi muốn thêm một tình huống bổ sung có cùng một vấn đề (trong trường hợp nó hữu ích cho bất kỳ ai khác). Tôi đã đẩy thiết lập và nó đã được làm việc trên chính xác 1 iphone (không phải những người khác). Điều này rất khó hiểu. Vấn đề là 1 chiếc iPhone hoạt động có phiên bản 'gỡ rối' của chương trình được cài đặt, nơi mà những người khác đã cài đặt phiên bản 'ad hoc'. Máy chủ APNS của chúng tôi đã được thiết lập để sử dụng chứng chỉ 'phát triển' và gateway.sandbox.push.apple.com

Tôi đã thay đổi chứng chỉ trên máy chủ thành chứng chỉ 'sản xuất' và máy chủ lưu trữ đến gateway.push.apple.com

(sau đó xóa tất cả các cấu hình dự phòng trên tất cả các thiết bị và cài đặt phiên bản 'ad-hoc' của chương trình)

và chúng tôi đã tốt để đi.

Các vấn đề liên quan