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

时间:2016-02-03 14:04:25

标签: ios ruby-on-rails postgresql heroku

后台:一个Rails应用程序,在Heroku上使用Postgres数据库。使用UIWebView使其成为原生的'在iOS中。在尝试包含推送通知时,有一些宝石,例如APNSRPushGrocer等。

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

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

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

1 个答案:

答案 0 :(得分:5)

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

  1. 使用属于用户的令牌(字符串)字段创建设备模型
  2. 创建一个API端点,允许您存储像POST /user/1234/devices.json {token: "...xxx..."}
  3. 这样的device_token
  4. 在您的iPhone应用中,注册用户以接收推送通知,然后该通知将为您提供设备令牌
  5. 将该设备令牌推送到您的API端点:)
  6. 如果您想向该特定用户发送推送通知,您可以执行某些操作(使用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
    
  7. 这将导致消息被发送到每个用户设备!您显然可以将其调整为仅使用一个设备,允许多个操作系统等。但是,您明白了这一点:)