2011-09-04 38 views
38

Chúng tôi muốn có thể đẩy tin nhắn văn bản đơn giản tới TẤT CẢ người dùng iPhone của chúng tôi. Đối với điều đó, chúng tôi rõ ràng là cần phải tạo một mã phía máy chủ lưu trữ các thẻ thiết bị và đẩy các tin nhắn bất cứ khi nào cần thiết. Có ví dụ nào tốt về việc này không? (Nói về mã máy chủ)Thực hiện thông báo Đẩy cho iOS (Phía máy chủ)

Cảm ơn

Trả lời

46

Có một cái nhìn tại easyAPNS nếu bạn muốn lưu trữ nó cho mình, hoặc truy cập Urban Airship nếu bạn là ok với một dịch vụ lưu trữ (họ có một bộ đầy đủ của tài liệu)

một trang web tốt để biết là trang web Ray Wenderlich của nơi tổ chức 2 phần hướng dẫn:

+1

Đó là Ray Wenderlich ... –

+0

Rất tiếc, cảm ơn chỉnh sửa – Frank

13
// Push Notification code for IPHONE in PHP 
    $deviceToken = $users_rows['gcm_regid']; 
    $passphrase = 'pass1234'; 
    $ctx = stream_context_create(); 
    stream_context_set_option($ctx, 'ssl', 'local_cert', 'DrinksterDevelopment.pem'); 
    stream_context_set_option($ctx, 'ssl', 'passphrase', $passphrase); 

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

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

    echo 'Connected to APNS' . PHP_EOL; 

    $body['aps'] = array(
     // 'alert' => $_GET["message"].'#'.$_GET["type"].'#'.$_GET["deal_id"], 
     'alert' => $_GET["message"], 
     'sound' => 'default' 
     ); 
    $body['other'] = $_GET["type"].'#'.$_GET["deal_id"]; 

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

    if (!$result_iphone) 
     $msg_iphone = 'Message not delivered' . PHP_EOL; 

    else 
     $msg_iphone = 'Message successfully delivered' . PHP_EOL; 

    mail('[email protected]', 'IOSPushMsgStatus', $msg_iphone); 
    fclose($fp); 
    } //if($users_rows['Platform'] == 'Web' OR $users_rows['Platform'] == 'Android') 
+0

Nếu tôi sử dụng máy chủ lưu trữ dùng chung, tôi có thể tải chứng chỉ lên đó và sử dụng mã php này không? Tôi đã thử nhưng không thể tìm thấy một cách - tôi sử dụng iPage bằng cách này. –

+0

Lưu ý rằng Apple xử lý việc mở và đóng lặp lại kết nối APN như một sự gắn kết từ chối dịch vụ. Nếu bạn gửi thông báo đẩy một lần một ngày, sau đó mở/đóng kết nối là Ok theo Apple. – gnasher729

0

tôi cũng khuyên bạn nên sử dụng một dịch vụ bên ngoài cho rằng như Urban Airship hoặc PushApps. Tôi quen thuộc hơn với người cuối cùng và tôi có thể nói với bạn rằng ngoài các thông báo đẩy "thông thường", bạn cũng nhận được tin nhắn theo phân đoạn, vị trí hoặc thậm chí là lập lịch thông báo. Nó có thể không có vẻ giống như một tính năng quan trọng cho bạn lúc đầu, nhưng khi cơ sở người dùng của bạn phát triển, bạn sẽ thấy tầm quan trọng của các tính năng đó.

+4

câu hỏi về mã không phải trả tiền dịch vụ – Alex

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