使用RPush(APNs)和Rails推送给特定用户

Jmo*_*hey 1 postgresql ruby-on-rails heroku ios

背景:一个Rails应用程序,在Heroku上使用Postgres数据库.使用UIWebView使其在iOS中"原生".在尝试包含推送通知时,还有APNS,RPushGrocer等宝石.

但是,他们需要设备令牌能够发送推送通知,并且需要将其链接到正确的用户ID,以便我们将通知发送给正确的人.比如使用聊天功能时.

据我所知,这些宝石更多地用于向所有用户推送通知.为了能够将它们发送给特定点的特定用户,我需要令牌与用户对应.

据我所知,没有这方面的文件.我认为最简单的方法之一是,如果Swift可以直接与Postgres数据库对话,看看谁登录了应用程序,然后将令牌分配给他们?

Mik*_*ogg 5

我会提前说一件事,虽然这可能很明显,但您必须将用户的设备令牌存储在rails应用程序的模型中.这是我通常这样做的方式:

  1. 使用属于用户的令牌(字符串)字段创建设备模型
  2. 创建一个API端点,允许您存储device_token之类的 POST /user/1234/devices.json {token: "...xxx..."}
  3. 在您的iPhone应用程序中,注册用户以接收推送通知,然后该通知将为您提供设备令牌
  4. 将该设备令牌推送到您的API端点:)
  5. 当你想向特定用户发送推送通知时,你会做一些事情(使用Rpush,虽然你可以为其中任何一个修改它),例如:

    @user.devices.each do |device|
      n = Rpush::Apns::Notification.new
      n.app = your_rpush_app
      n.device_token = device.token
      n.alert = "Here's a pretty sweeeeeet message! Eh?"
      n.data = {}
      n.save!
    end
    
    Run Code Online (Sandbox Code Playgroud)

这将导致消息被发送到该用户设备中的每一个!您显然可以将其调整为仅使用一个设备,允许多个操作系统等.但是,您明白了:)