Push-уведомление с использованием Urban AirShip и Rails 3 для iphone - PullRequest
7 голосов
/ 08 июля 2011

Каков наилучший способ отправки push-уведомлений через Urban AirShip с помощью веб-приложения Rails 3?

Из документации Urban AirShip:

HTTP POST для / api / push/ широковещательный / отправляет данное уведомление всем зарегистрированным токенам устройства для приложения.Полезная нагрузка находится в JSON с типом содержимого application / json, с такой структурой:

{
    "aps": {
         "badge": 15,
         "alert": "Hello from Urban Airship!",
         "sound": "cat.caf"
    },
    "exclude_tokens": [
        "device token you want to skip",
        "another device token you want to skip"
    ]
}

Я действительно не знаю, с чего начать!

Ответы [ 4 ]

23 голосов
/ 24 августа 2011

Лучше использовать UrbanAirship Groupon версия .Их документы очень четко определяют каждую вещь, и это будет намного более аккуратным кодом.Работал и тестировался в моем приложении.

Из файла read me (с некоторыми дополнительными комментариями и всеми): -

Примечание: если вы используете Ruby 1.8, вам также следует установить system_timerдрагоценный камень для более надежного поведения тайм-аута.См. http://ph7spot.com/musings/system-timer для получения дополнительной информации.Baically

  gem install system_timer

Установка

 gem install urbanairship 
 # or specify in your gem file 
 gem "urbanairship"

Конфигурация определите все это в каталоге инициализации, а затем убедитесь, что вы перезапускаете приложение.

    Urbanairship.application_key = 'application-key'
    Urbanairship.application_secret = 'application-secret'
    Urbanairship.master_secret = 'master-secret'
    Urbanairship.logger = Rails.logger
    Urbanairship.request_timeout = 5 # default

Использование

Регистрация токена устройства

    Urbanairship.register_device 'DEVICE-TOKEN' # => true

Отмена регистрации токена устройства

    Urbanairship.unregister_device 'DEVICE-TOKEN' # => true

Отправка push-уведомления(для мгновенной доставки удалите атрибут schedule_for)

    notification = {
      :schedule_for => 1.hour.from_now,
      :device_tokens => ['DEVICE-TOKEN-ONE', 'DEVICE-TOKEN-TWO'],
      :aps => {:alert => 'You have a new message!', :badge => 1}
    }

    Urbanairship.push notification # => true

Пакетная отправка push-уведомлений (для мгновенной доставки удалите атрибут schedule_for)

    notifications = [
      {
        :schedule_for => 1.hour.from_now,
        :device_tokens => ['DEVICE-TOKEN-ONE', 'DEVICE-TOKEN-TWO'],
        :aps => {:alert => 'You have a new message!', :badge => 1}
      },
      {
        :schedule_for => 3.hours.from_now,
        :device_tokens => ['DEVICE-TOKEN-THREE'],
        :aps => {:alert => 'You have a new message!', :badge => 1}
      }
    ]

        Urbanairship.batch_push notifications # => true

Отправка широковещательных уведомлений Urbanairship позволяет отправлять широковещательные уведомлениявсе активные зарегистрированные токены устройства для вашего приложения (для мгновенной доставки удалите атрибут schedule_for)

    notification = {
      :schedule_for => 1.hour.from_now,
      :aps => {:alert => 'Important announcement!', :badge => 1}
    }

    Urbanairship.broadcast_push notification # => true
0 голосов
/ 30 августа 2016

В Rails 4.2.x и Ruby 2.3.x я использую гем ' urbanairship ', лучше всего ссылаться на самую последнюю найденную документацию здесь .

Пример отправки на ios:

def deliver_push_notification recipient_uuid, message
  ua             = Urbanairship
  client         = ua::Client.new(key: ENV["URBAN_AIRSHIP_APP_KEY"], secret: ENV["URBAN_AIRSHIP_MASTER_SECRET"])
  p              = client.create_push
  p.audience     = ua.ios_channel(recipient_uuid)
  p.notification = ua.notification(ios: ua.ios(alert: message))
  p.device_types = ua.device_types(["ios"])
  p.send_push
end
0 голосов
/ 10 июля 2011

Хорошо, это простой способ отправки трансляции городского дирижабля с контроллера ROR:

require 'net/http'
require 'net/https'
require 'open-uri'    

app_key = 'JJqr...'
app_secret = 'lAu7...'
master_secret = 'K81P...'

payload ={
    "aps" => {"badge"  => "0", "alert" => "My own message", "sound" => ""}
}.to_json

full_path = 'https://go.urbanairship.com/api/push/broadcast/'
url = URI.parse(full_path)    
req = Net::HTTP::Post.new(url.path, initheader = {'Content-Type' =>'application/json'})
req.body = payload
req.basic_auth app_key, master_secret

con = Net::HTTP.new(url.host, url.port)
con.use_ssl = true

r = con.start {|http| http.request(req)}

logger.info "\n\n##############\n\n  " + "Resonse body: " + r.body + "  \n\n##############\n\n"  

Приветствия!

0 голосов
/ 08 июля 2011
...