Как отправить сообщение c2dm из приложения rails - PullRequest
3 голосов
/ 26 августа 2011

РЕДАКТИРОВАТЬ 3

Я использую RhoMobile для получения device_token, который я получаю на сервер

def register_device
    @person = Person.find(:first)
    unless System.get_property('is_emulator')
     url = "#{@base}/users/#{@person.remote_id}/register_device?os=#{System.get_property('platform')}&device_token=#{System.get_property('device_id')}"
     Rho::AsyncHttp.get(
        :url => url,
        :headers => {'User-Agent' => Rho::RhoConfig.user_agent}
      )
    end
    finish_and_go_to_venue
  end

РЕДАКТИРОВАТЬ 2

Имею device_token, но продолжаю получать Error=NotRegistered

EDIT

OK, поэтому первой ошибкой было использование неправильного идентификатора устройства.Теперь работает, но телефон не выдает предупреждения с сообщением.

ORIGINAL

Первый пользователь, отправляющий сообщения Push для Android с сервера rails.

Использование https://github.com/sghael/speedy_c2dm

Я зарегистрировался в Google и получил электронное письмо из белого списка.

пытаюсь выполнить test.rb ниже, но на телефон ничего не отправляется.

require 'rubygems'
require 'bundler'
Bundler.setup(:default, :development)
$LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
$LOAD_PATH.unshift(File.dirname(__FILE__))
require 'speedy_c2dm'


TEST_EMAIL = "my_push_email@gmail.com"
TEST_PASSWORD = "MY_PASSWORD"
TEST_REGISTRATION_ID = "DEVICE_TOKEN_RECEIVED_FROM_PHONE"

speedyC2DM = SpeedyC2DM::API.new(TEST_EMAIL, TEST_PASSWORD)

options = {
  :registration_id => TEST_REGISTRATION_ID,
  :message => "Hi!",
  :extra_data => 42,
  :collapse_key => "some-collapse-key"
}


response = speedyC2DM.send_notification(options) 

1 Ответ

1 голос
/ 23 ноября 2011

Попробуйте добавить контроллер с именем Push, и внутри контроллера вам потребуется следующее:

require 'rho/rhocontroller'
require 'helpers/browser_helper'

class PushController < Rho::RhoController
  include BrowserHelper

  def push_callback

    Alert.show_popup @params['message'] #this will show you a popup with your push message
    puts "push_callback : #{@params}" #you'll see what you are receiving with this
    "rho_push"  #to run rhodes push command processing (for alerts, sounds, etc…)
  end


end

вам нужно настроить приложение на вызов этого, добавив следующую строку в application.rb

System.set_push_notification "/app/Push/push_callback", ''

Кроме того, вы правильно настроили свой build.yml?

android:
  push:
    notification: always
    sender: your-sender-email@gmail.com
capabilities:
  - push
  - vibrate

По крайней мере, с моим приложением мне нужно запустить приложение, чтобы получить сообщение.

...