apn_sender 和 Rails 3

2024-01-04

我有一个项目需要从服务器向设备发送通知。我不知道如何以及从哪里开始(首先创建表或其他),因为我是 Ruby on Rails 的新手。我已经按照 apn_sender 教程进行操作,但它不起作用并且在启动时总是出错。有没有为 Rails 3 创建 apn_sender 的完整教程?

Thanks


Rails 3 和 apn_sender

我也一直在研究 apn_sender 问题,因为我喜欢 Apple 推送通知支持看起来相当强大。然而,该项目已被放弃,现在落后于最新的 3 系列导轨。我已经让系统按如下方式工作。

Gemfile

gem 'apn_sender', :require => 'apn'
gem 'daemons'
gem 'resque', '1.20.0'
gem 'resque-access_worker_from_job'

1.20 之后,Resque 中的信号处理发生了变化,因此您必须使用较旧的 1.20.0。守护进程本来应该是一个要求,但从未明确地出现在 gem 规范中。

脚本/apn_sender

#!/usr/bin/env ruby

# Daemons sets pwd to /, so we have to explicitly set RAILS_ROOT
RAILS_ROOT = File.expand_path(File.join(File.dirname(__FILE__), '..'))

require 'rubygems'
require 'apn'
require 'apn/sender_daemon'

APN::SenderDaemon.new(ARGV).daemonize

取自此here. https://gist.github.com/kdonovan/1030667未生成 apn_sender 脚本的原因是需要针对 3 系列 Rail 更新生成器脚本。

启动发送者

./script/apn_sender --environment=production --verbose start

启动环境时,生产值可能就是您想要的,因为 ad_hoc 和发布版本都使用生产证书。

这把叉子 https://github.com/kdonovan/apn_sender/pull/24github上已经纠正了一些rails 3问题,但是resque版本问题仍然需要明确解决。

手动测试

这个网站 http://hansay.com/2012/02/14/using-apn-sender-to-send-push-notifications-to-your-ios-devices/展示如何绕过守护进程发送消息。他将标记存储为 base64 编码的字符串,这种方式很好且紧凑。 apn_sender 框架中设备字符串的格式是十六进制字符串,格式如下:deadbeef 0a1b2cdf deadbeef 0a1b2cdf deadbeef 0a1b2cdf deadbeef 0a1b2cdf。空格可选。

require 'base64'
ios_device_token = User.where(username: 'Cameron').first.ios_device_token
token = Base64.decode64(ios_device_token).unpack('H*').first.scan(/\w{8}/).join(' ')
notification = APN::Notification.new(token, { alert: 'Hello, World!', sound: true, badge: 99 })
sender = APN::Sender.new(verbose: true, environment: 'production')
sender.send_to_apple(notification)

确保 Feedback.rb 文件是最新的

# Unpacking code borrowed from http://github.com/jpoz/APNS/blob/master/lib/apns/core.rb
while bunch = socket.read(38)   # Read data from the socket
  f = bunch.strip.unpack('N1n1H140')
  feedback << APN::FeedbackItem.new(Time.at(f[0]), f[2])
end

该代码的一个版本缺少 38,导致反馈服务返回错误的令牌字符串

JetBrains 的 RubyMine

如果您计划将 Ruby 开发提升到一个新的水平,您还应该考虑像这样的 IDERubyMine http://www.jetbrains.com/ruby/因为它让一切变得更加容易。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

apn_sender 和 Rails 3 的相关文章

  • Rails 3.2 防止使用错误保存对象

    我有一个 ActiveRecord 对象 我想阻止它被保存 而不对模型进行永久验证 你曾经可以使用做这样的事情errors add但它看起来不再有效了 user User last user errors add name name doe
  • SSL 与 Ruby on Rails

    我需要做什么才能让我的 Ruby on Rails 应用程序获得使用 https 的流量 我安装了证书 如果我在访问网站时在地址栏中手动输入 https 则会出现小锁图标 但只需在浏览器中手动访问 www example app com 即
  • 在 iOS 上构建 WebRtc

    我按照以下说明成功地在 MAC 上构建了 WebRTC http www webrtc org reference getting started http www webrtc org reference getting started
  • 如何在气隙 Mac 上安装新的 Apple 全球开发者关系中级证书?

    您可能知道也可能不知道 现在使用新的中间证书生成新的签名证书 你可以在这里读到它 https developer apple com support wwdr intermediate certificate https developer
  • 强参数和多维数组

    我在用着轨道 3 2 6 with 参数强 https github com rails strong parameters gem 所以 我有一个具有典型更新操作的控制器 PUT api resources id def update r
  • 加载“mysql2”Active Record 适配器时出错

    我正在尝试升级我的应用程序 这是我在部署应用程序时遇到的错误 加载 mysql2 Active Record 适配器时出错 缺少它所依赖的宝石 无法激活mysql2 0 4 4 已经激活mysql2 0 3 21 确保所有依赖项都添加到 G
  • iOS8 自签名证书已安装但仍不受信任

    由于我无法控制的原因 我需要使用自签名证书针对平台进行 iOS 开发 它是一个在 SAN 中具有特定 IP 地址的根证书 当证书安装在 OSX 系统帐户下时 所有浏览器现在将正常信任对给定 IP 地址的任何访问 通过电子邮件将同一证书发送到
  • HttpClient setReachabilityStatusChangedBlock 声明没有接口

    尝试使用 AFNetworkings ReachabilityStatusChanged 但得到 HTTPCLIENT 没有可见的 interface 声明选择器 setReachabilityStatusChangeBlock 但Http
  • 如何在javascript中计算日出和日落?

    我正在使用appcelerator titan开发一个IOS应用程序 我想让我的应用程序在日出和日落时向用户发送本地通知 解决这个问题的一个好工具是使用 YQL 的雅虎天气 但是 雅虎天气仅供非商业用途 我正在尝试找到一个javascrip
  • 如何让 Redis 在 Heroku 上启动?

    我已经添加了RedistogoHeroku 上的 nano 插件 我已经在控制台中成功测试了它 但是 当我的应用程序尝试连接 Redis 时 出现以下错误 Heroku 日志文件 2011 10 12T08 19 50 00 00 app
  • 使用 Ruby 重命名 S3 中的对象

    我想使用 Ruby sdk 重命名 s3 中的项目 我该怎么做呢 我努力了 require aws sdk s3 AWS config region gt region access key id gt key secret access
  • 强制本地化图像或图像资产

    正如在这个问题中 如何强制 NSLocalizedString 使用特定语言 https stackoverflow com questions 1669645 how to force nslocalizedstring to use a
  • 如何获得 UICollectionView 的矩形

    我想在 UICollectionView 中找到节标题的框架 我对 UITableView 也有类似的情况 为此 我能够通过执行以下操作来获得其正确性 CGRect rect self tableView rectForHeaderInSe
  • iOS 中第一响应者的正式定义是什么?

    据我所知 第一响应者对象是根据输入活动等接收回调信号 并且它将沿着链向上冒泡 直到找到愿意处理它的响应者 但更正式地说 第一响应者的范围是什么 例如 它是应用程序范围的响应程序吗 似乎作为第一响应者只是说这个特定的对象将收到交互通知 其他响
  • XOR或其他简单的文件混淆方法ios目标c

    我正在开发一个使用受版权保护的 pdf 文件的 ios 应用程序 我正在寻找一些简单的方法来混淆文件以确保安全 这些方法不需要我经历额外的大众市场 CCATS 加密审查流程 但也将确保版权所有者已尽我所能来保证他们的数据安全 当然 我用密码
  • 从应用程序打开/关闭 iPhone 的 Wifi

    我需要打开或关闭 iPhone 中的 wifi 有什么方法可以做到吗 还是被禁止了 私有框架 所有使用公共 SDK 编写的应用程序都经过沙箱处理 他们只能访问苹果认为可以在该沙箱中使用的属性和数据 恐怕 Wi fi 不在列表中 请看一下这个
  • 添加多态引用的向下迁移是什么

    我有以下迁移 但不知道在其中使用什么down method change table addresses do t t references addressable polymorphic gt true end 实际上 change ta
  • 为什么我收到 com.facebook.sdk.login 错误 308?

    我正在使用 Xcode 7 0 在 iOS 9 0 2 上进行测试并使用 Facebook SDK 4 7 0 当我登录用户时 大多数时候一切都正常 但有时我不断收到此错误 但我不知道为什么 操作无法完成 com facebook sdk
  • 如何使用 ROR 设置控制器页面内的文本区域属性[重复]

    这个问题在这里已经有答案了 任何人都可以解决我的小问题吗 实际上我想在页面加载并检查某些条件后设置文本区域启用 让我来解释一下我的故事实际上是我想要的 Story 我有一个博客页面 当用户登录并进入博客页面时 应该启用文本区域来发表评论 如
  • 在启动屏幕中执行代码已更新

    在原始启动屏幕中执行代码 https stackoverflow com questions 27642016 execute code in launch screen 现在默认的LaunchScreenXcode 项目中的文件已更改为

随机推荐

  • 如何访问从 webpack 外部捆绑包/块捆绑的模块

    首先我要说的是 我已经尝试寻找这个问题的答案 但没有找到任何有效的方法 甚至没有找到任何可能的暗示 我最近从 RequireJS 配置转向使用 Webpack 进行汇总 在 Groovy 应用程序的某些地方 我们在 GSP 中有一个脚本标记
  • Quartz Spring CronTrigger 触发次数超过配置次数

    我有一个用于 digestJob 作业的 cronTrigger
  • 使用 TermDocumentMatrix 进行 UTF-8 字符编码

    我正在努力学习R 我已经尝试解决这个问题几个小时了 我已经搜索并尝试了很多方法来解决这个问题 但到目前为止还没有运气 那么我们开始吧 我正在从 Twitter 通过 twitteR 下载一些随机推文 当我检查数据框时 我可以看到所有特殊字符
  • REST 在分布式 Web 应用程序中的用途是什么

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我正在学习 REST API 但无法理解如何在分布式 Web 应用程序中使用 REST 这是唯一的参考 http www slides
  • 如何选择特定类的最后一个元素[重复]

    这个问题在这里已经有答案了 我想知道为什么 foo 正在记录一个值 而 bar 却没有 它们在语法上似乎也相同 编辑 这是一个 X Y 问题 我的目标是获得班级的最后一个元素foo我尝试使用这个last child 我试过last of t
  • 未提供有效的身份验证

    我被困在这个步骤2 4wiki https dev loganalytics io documentation 1 tutorials direct api 在上一步中 我获得了一个有效的令牌 为什么我收到 未提供有效的身份验证 我添加了一
  • 查找仅限于多个范围的重复项 - pandas

    假设我们的问题可以这样简化 df pd DataFrame df C rows C1 C2 C3 C2 C1 C2 C3 C1 C2 C3 C4 C1 df values customer1 4321 1266 5671 customer2
  • 找不到 MSBuild.exe、cmd.exe

    我最近安装了 Visual Studio 2017 MSBuild exe 不应该附带吗 bash 脚本之一正在调用它 但找不到任何内容 这是 build bat 中产生错误的部分 您可以看到整个文件here https github co
  • OpenCV Docker 多阶段构建 - 无法安装预构建源

    我正在尝试构建一个 Docker 映像 其中包括具有 CUDA 和 GPU 支持的非常特殊的 OpenCV 配置 构建成功 如果我make install它来自构建图像的相同上下文 它可以正常工作 当我尝试使用多阶段构建以避免保留构建 Op
  • Spacy Entity Linking 模型的训练时间

    我正在尝试使用 Wikidata 和 Wikipedia 中的脚本来训练 Spacy Entity Linking 模型https github com explosion spaCy tree master bin wiki entity
  • C# 匿名类型在 C# 7 中是否多余

    由于 C 7 引入了值元组 是否存在比元组更适合的有意义的场景 例如 以下行 collection Select x i gt x i Where y gt arr y i f y x ToArray 制作以下行 collection Se
  • 当用户返回后台应用程序时如何触发功能?

    例如 用户打开应用程序 按主页按钮 然后再次返回该应用程序 当用户导航回应用程序时 有什么方法可以触发某些功能吗 例如 当用户返回应用程序时自动加载视图对象 这个问题适用于 Android 和 iOS 在项目中根据您的喜好使用以下内容App
  • ggpattern na 值后缺少模式

    使用 ggpattern 如何不显示 NA 值的模式 但在该点之后继续模式 当我运行此代码时 NA 值之后没有更多模式 尽管应该有 library swimplot library ggpattern library tidyverse d
  • “清理”用户提交的 Javascript - 所以它仍然有效!

    我计划在我的网站中设置一个功能 用户可以提交 HTML CSS 和 JS 然后将其 实时 生成为完整的 HTML 工作页面 其他用户将能够看到这一点 这些页面需要有有效的 Javascript 我知道这本身就是一个相当大的安全缺陷 但该功能
  • Excel LEN() 函数对长度超过 20 个字符的数字返回 5

    当我的数字超过 20 个字符时 Excel 中的 LEN 函数返回 5 我已经在桌面和移动设备上尝试过此操作 并得到相同的结果 当我使用 评估公式 时 它显示它从 LEN 100000000000000000000 20个零 到 5 如果有
  • 驱动程序的卸载按钮被禁用

    我已经为虚拟设备编写了相当简单的第一个驱动程序 它还有一个 inf 我使用安装驱动程序开发者大会 http support microsoft com kb 311272 它安装良好且功能正常 但我的问题是当我尝试卸载它时 devcon e
  • 使用语义发布获取下一个标签版本

    您好 我在我的存储库中使用语义发布进行版本控制 在我的 Gitlab 中 当我将分支与 master 合并时 我的标签会根据提交而增加 并且工作正常 有什么方法可以让我获得合并之前的 下一个标签版本 我想在合并之前将下一个版本写入文件 尝试
  • 不同基于 C# 的服务之间的通信

    有没有办法在两个不同的服务之间进行通信 我有一项已经运行的服务 有没有办法创建第二个服务 可以附加到第一个服务并向其发送和接收日期 我还想从控制台应用程序访问 Windows 服务并附加到它 是否可以 您可以尝试使用以下方法来实现 IPC
  • 检测语音转文本中的填充词

    我使用 Google Speech API 进行语音到文本的转换 但是 它会过滤掉填充词 例如 呃 嗯 啊 等 我有什么办法可以获得包含填充词的文本吗 使用更灵活的API 如Kaldihttp kaldi asr org http kald
  • apn_sender 和 Rails 3

    我有一个项目需要从服务器向设备发送通知 我不知道如何以及从哪里开始 首先创建表或其他 因为我是 Ruby on Rails 的新手 我已经按照 apn sender 教程进行操作 但它不起作用并且在启动时总是出错 有没有为 Rails 3