Bucket Place

[Ruby on Rails & Android] GCM(Android Push) and Ruby On Rails 연동 Part 3.

Cloud Travel 2014. 6. 23. 18:21


  3 단계: Server 개발  


 Server 개발의 이슈는 크게 3가지가 있다고 봅니다.


 1. Server에서의 기계 Registeration Id값을 관리하는 코드 및 장소를 마련하기

   - 이건 이번 부분에서 생략합니다. 실질적으로 GCM을 쓰는 어떤 데이터베이스나 비슷하게 구현되고 쉽게 생각 가능하기 때문

 2. 어떤 부분에서 모바일에 Push를 보낼지를 생각하기

   - Rails의 경우 RESTful구조의 적당한 위치에 Push를 주는 코드를 작성하기만하면 쉽게 처리가 가능합니다.

 3. Push로는 어떤 내용을 보낼 것인가?


그럼 Rails의 기본인 Ruby로 Push메세지를 보내는 방법을 알아봅시다.


일단 GCM 잼을 설치하셔야 합니다.

https://github.com/spacialdb/gcm Git을 참조하여 따라하시면 됩니다. Rails 사용자라면 손쉽게 가능할 것입니다. 

파일명은 send.rb로 한다고 가정합니다.

require 'gcm'

gcm = GCM.new("API Access Key")
registration_ids= ["Reg Id1","Reg Id2"]
options =
{
    data:
    {
        msg: "This is notification!",
        condition: 1,
    }
}
response = gcm.send_notification(registration_ids, options)
puts response

여기서 사용하는 키는 API Access Key와 받을 기계의 Registeration Id입니다.

보낼 내용을 Json형태로 만들어서 보내주시면 됩니다.

response를 통해서 결과를 볼 수 있습니다.


ruby send.rb


자신의 reg_id를 이용하서 실행해보면 Push가 오는 것을 볼 수 있습니다.

이제 이 소스를 잘 이용하시면됩니다.


적정한 위치에 적장한 Reg_ids배열을 불러와 전송을 하면됩니다.


예를 들어, 회원 등록을 한경우에 Push를 보낸다면

app/controllers/user_controller.rb의 create함수를 수정하면 됩니다. Id를 가져오거나 받아오는 부분은 만들지

않았기 때문에 그에 대한 부분은 생략한 코드 입니다

...
  # POST /users
  # POST /users.json
  def create
    @user = User.new(user_params)

    respond_to do |format|
      if @user.save
        format.html { redirect_to @user, notice: 'User was successfully created.' }
        format.json { render :show, status: :created, location: @user }

        # GCM
        gcm = GCM.new("API Keys")
        registration_ids= ["regIds!!!!"]
        options = 
          {
            data: 
            {
              msg: "This is notification!",
              content_id: 1,
            }
          }
        response = gcm.send_notification(registration_ids, options)
        puts response

      else
        format.html { render :new }
        format.json { render json: @user.errors, status: :unprocessable_entity }
      end
    end
...

아마도 GCM API Key를 이용하여 생성하는 부분등과 필요한 아이디를 가져오는 부분은 하나의 모듈을 만들어서

관리하면 매우 이쁠 것입니다.




  닫는글...



 먼가 덕지덕지 붙은 코드라 복잡해보일수도 있지만! 잘알아봐주시길 바랍니다!