2017-09-28 13 views
6

tôi đã gửi thông báo trong các phiên bản cũ của ios. nhưng trong phiên bản mới hơn, tôi không thể tạo tệp .pem. Có người nói với tôi rằng tập tin pem không còn cần thiết để gửi thông báo từ máy chủ. Nhưng với may mắn tôi không thể tìm thấy bất kỳ liên kết nào về vấn đề này. Ai đó vui lòng hướng dẫn tôi cách gửi thông báo đẩy từ máy chủ trong phiên bản mới hơn của ios. Tôi bị kẹt khi gửi thông báo kể từ tuần trước. Hãy giúp tôi. Đây là mã tôi đang sử dụngcách gửi thông báo đẩy trong ios từ máy chủ bằng cách sử dụng php trong phiên bản mới hơn của ios, mà không cần sử dụng tệp pem

private function pushnotification($deviceToken, $message, $type, $badge, $userid, $jobid) { 
    $passphrase = '123456'; 

    $ctx = stream_context_create(); 

    // $file = base_path(). "/public/WenderCastPush.pem"; 
    //stream_context_set_option($ctx, 'ssl', 'local_cert', $file); 
    stream_context_set_option($ctx, 'ssl', 'passphrase', $passphrase); 
    stream_context_set_option($ctx, 'ssl', 'verify_peer', false); 
    stream_context_set_option($ctx, 'ssl', 'verify_peer_name', false); 
    stream_context_set_option($ctx, 'ssl', 'allow_self_signed', true); 
    //stream_context_set_option($ctx, 'ssl','ciphers', 'TLSv1'); 
    // 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); 
    $fp = stream_socket_client('ssl://gateway.push.apple.com:2195', $err, $errstr, 60, STREAM_CLIENT_CONNECT | STREAM_CLIENT_PERSISTENT, $ctx); 

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

    $body['aps'] = array(
     //'badge' => +1, 
     'alert' => $message, 
     'sound' => 'default', 
     //'title' => $message, 
     'type' => $type, 
     'userid' => $userid , 
     'jobid' => $jobid, 
    ); 
    // Encode the payload as JSON 
    $payload = json_encode($body); 


    $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) 
     $responce = 'Message not delivered' . PHP_EOL; 
    else 
     $responce = 'Message successfully delivered' . PHP_EOL; 

    // Close the connection to the server 
    fclose($fp); 
    return $responce; 
} 
+0

bạn đã thử bất cứ điều gì @Gaurav Malik –

+0

có vui lòng câu hỏi cập nhật –

+0

Mặc dù bạn không cần sử dụng Thông báo đẩy Bluemix, bạn có thể sử dụng Bước 2 của tài liệu để giải quyết vấn đề của bạn https://console.bluemix.net/docs/services/mobilep ush/push_step_1.html # push_step_1. Chứng chỉ p12 được tạo có thể được sử dụng với tập lệnh php –

Trả lời

4

Bạn có thể gửi thông báo bằng Firebase.
Ứng dụng iOS của bạn phải được biên dịch bằng Firebase.
và cuộc gọi địa chỉ sau sử dụng bài viết Phương pháp

visit this link

Nó không phải là rất khó khăn.

kiểm tra this video.

+0

có các dịch vụ khác cũng giống như các dịch vụ -> https://onesignal.com/, miễn phí và có tài liệu tốt. REST API để gửi push thực sự dễ dàng – parpar

2

thông báo Gửi đẩy lên iOS sử dụng APN mới HTTP/2 giao thức với thẻ dựa trên (JWT với khóa riêng p8) hoặc giấy chứng nhận thẩm định dựa trên

Bạn có thể sử dụng This Package

và tài liệu của apple developers của nó hữu ích

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