Итак, я пытаюсь реализовать iOS Pu sh функцию вызова токена из Rails API.
Эквивалентный запрос curl выглядит примерно так:
"curl -v -d '"+'{"aps":{"user":"'+user.name.to_s+'"}}'+"' --http2 --cert #{cert_path}:passwd <apple_account_url>/#{push_token}"
Мы выполнение этого через Kernel.system curl_request
Хотя это работает в нашем тестовом экземпляре, но не работает на производственном сервере с сообщением:
Unsupported protocol: curl_request
Я пытаюсь преобразовать это в эквивалентный HTTP-запрос, вот следующий код для того же:
def send_ios_call_http(user)
uri_str = ENV['IOS_PUSH_URL'] + "/"
push_tokens = ['has5766782ebjadad7712831313', '2131112...']
cert_path = Rails.root.join("config", "private/Certificates.pem")
push_tokens.each do |push_token|
uri_str += push_token
uri = URI.parse(uri_str)
request = Net::HTTP::Post.new(uri)
request.body = JSON.dump({
"aps" => {
"user" => user.email
}
})
req_options = {
use_ssl: uri.scheme == "https",
cert: "#{cert_path}:passwd"
}
response = Net::HTTP.start(uri.hostname, uri.port, req_options) do |http|
http.request(request)
end
end
end
Кажется, это не работает. Оба запроса требуют путь к сертификату и пароль, который у нас уже включен в оба запроса.
Запрос curl работает на нашем тестовом экземпляре, но не на производственном сервере heroku, на котором установлен curl. Пытался позвонить с номера bash, но все равно не работает