Tôi đang cố gửi thông báo đẩy tới APN bằng Erlang. Đây là mã tôi đã đưa ra cho đến nay:Làm cách nào để gửi thông báo đẩy bằng Erlang?
-module(apnstest2).
-export([connect/0]).
connect() ->
application:start(ssl),
ssl:seed("someseedstring"),
Address = "gateway.sandbox.push.apple.com",
Port = 2195,
Cert = "/path/to/Certificate.pem",
Key = "/path/to/Key.unenc.pem",
Options = [{certfile, Cert}, {keyfile, Key}, {mode, binary}],
Timeout = 1000,
{ok, Socket} = ssl:connect(Address, Port, Options, Timeout),
Token = "195ec05a962b24954693c0b638b6216579a0d1d74b3e1c6f534c6f8fd0d50d03",
Payload = "{\"aps\":{\"alert\":\"Just testing.\",\"sound\":\"chime\", \"badge\":10}}",
TokenLength = length(Token),
PayloadLength = length(Payload),
Packet = [<<0:8, TokenLength, Token, PayloadLength, Payload>>],
ssl:send(Socket, list_to_binary(Packet)),
ssl:close(Socket).
Các mã không tận dụng đồng thời Erlang nhưng chỉ là một nguyên mẫu. Tôi chỉ muốn thử nghiệm nếu tôi có thể gửi push theo cách đơn giản nhất.
Tôi nghĩ rằng vấn đề nằm trong gói được gửi đến APN. Đây là định dạng nhị phân của một thông báo push:
Làm thế nào tôi nên tạo như một gói tin trong Erlang? Có thể ai đó vui lòng xem mã của tôi và cho tôi biết vấn đề ở đâu?
Ngoài ra tôi đã sử dụng ứng dụng SSL của Erlang để tạo kết nối và gửi dữ liệu và tôi không biết nếu đây là vấn đề hay gói.
Cảm ơn!