用 Houston 在本地调试远程通知

Houston 的背景

Houston 在 GitHub 上的地址:https://github.com/nomad/Houston,作者又是Mattt Thompson,简直是惨无人道啊,又高产,又有质量

Houston 能让我们在本地、甚至终端很方便的调试远程通知。


安装

首先在终端安装:

$ gem install houston

我第一次安装的时候报了错,但是第二次就安装成功了:

...
Installing ri documentation for houston-2.2.3
1 gem installed

安装成功后执行gem list命令可以看到 houston 和它的版本号:

然后也能执行apn命令了:

$ apn
error: undefined method `size' for nil:NilClass. Use --trace to view backtrace

准备证书

在正式的使用之前需要先准备好pem证书文件:

  1. Keychain Access里选择你的Push Services证书和通过它左侧的小箭头展开的私钥文件
  2. 选择这两个文件后,右键选择Export 2 items...
  3. 选择p12格式并将导出的文件命名为cert.p12
  4. 最后将这个p12文件转成pem文件
$ openssl pkcs12 -in cert.p12 -out apple_push_notification.pem -nodes -clcerts

如果你的 Keychain Access 里没有 Push Services 证书的话,你可能需要下载或创建一个:
1. 登录到 iPhone Developer Connection Portal(http://developer.apple.com/iphone/manage/overview/index.action )并点击 App IDs
2. 创建一个不使用通配符的 App ID ,这是因为通配符 ID 不能用于推送通知服务
3. 点击 App ID 旁的“Configure”,然后按下按钮生产 推送通知许可证。根据“向导” 的步骤生成一个签名并上传,最后下载生成的许可证
4. 通过双击 .cer 文件将你的 aps_developer_identity.cer 添加到 Keychain Access中
5. 添加后Push Services证书后就开始pem文件,步骤同上

然后就能在终端测试远程通知了。


发送远程通知

需要在apn命令里指定DeviceTokenpem证书路径。

普通文本

比如测试一下普通的文本通知:

$ apn push "<d10c67b0 079cfdc0 27b5dd81 2fd537ce 16831f40 ca55fa34 8b14ffde 626435f6>" -c ~/Desktop/apple_push_notification.pem -m "Hello"

成功后的终端提示:

1 push notification sent successfully

自定义参数

带参数的远程通知:

$ apn push "<d10c67b0 079cfdc0 27b5dd81 2fd537ce 16831f40 ca55fa34 8b14ffde 626435f6>" -c ~/Desktop/apple_push_notification.pem  -m "Hello" -d content-id=42

自定义多个参数

多个参数之间用逗号分隔:

$ apn push "<d10c67b0 079cfdc0 27b5dd81 2fd537ce 16831f40 ca55fa34 8b14ffde 626435f6>" -c ~/Desktop/apple_push_notification.pem  -m "Hello" -d content-id=42,icon=image.png

静默通知

$ apn push "<d10c67b0 079cfdc0 27b5dd81 2fd537ce 16831f40 ca55fa34 8b14ffde 626435f6>" -c ~/Desktop/apple_push_notification.pem  -s "" -n

静默通知要把 sound 设为空字符串,并且要启用content_available

终端可用选项

  • ‘-m’, ‘–alert ALERT’, ‘Body of the alert to send in the push notification’
  • ‘-b’, ‘–badge NUMBER’, ‘Badge number to set with the push notification’
  • ‘-s’, ‘–sound SOUND’, ‘Sound to play with the notification’
  • ‘-y’, ‘–category CATEGORY’, ‘Category of notification’
  • ‘-n’, ‘–[no]-newsstand’, ‘Indicates content available for Newsstand’
  • ‘-d’, ‘–data KEY=VALUE’, Array, ‘Passes custom data to payload (as comma-delimited “key=value” declarations)’
  • ‘-P’, ‘–payload PAYLOAD’, ‘JSON payload for notifications’
  • ‘-e’, ‘–environment ENV’, [:production, :development], ‘Environment to send push notification (production or development (default))’
  • ‘-c’, ‘–certificate CERTIFICATE’, ‘Path to certificate (.pem) file’
  • ‘-p’, ‘–[no]-passphrase’, ‘Prompt for a certificate passphrase’
时间: 2025-01-08 00:32:42

用 Houston 在本地调试远程通知的相关文章

解放双手:如何在本地调试远程服务器上的Node代码

写在前面 谈到node断点调试,目前主要有三种方式,通过node内置调试工具.通过IDE(如vscode).通过node-inspector,三者本质上差不多.本文着重点在于介绍 如何在本地通过node-inspector 调试远程服务器上的node代码. 在进入主题之前,首先会对三种调试方式进行入门讲解,方便新手理解后面的内容.至于老司机们,可以直接跳到主题去. 方式一:内置debug功能 进入调试模式(在第1行断点) node debug app.js 进入调试模式(在第n行断点) 比如要在

VS不能启动调试-在本地调试提示不能打开远程调试

问题描述 首先,我是本地调试,不是真远程调试.现在试过2种:1.初始化VS,不行2.重置VS,正在下安装包当时是做A测试时,不小心点了一个什么就不行了..然后A测试所在的目录下的所有旧项目都不行..别的目录里的旧项目可以..试过清理方案,也不行..如图 解决方案 解决方案二:如果有的项目行有的项目不行,那问题就出在项目属性或config.manifest文件中,跟旧项目一条一条对照一下解决方案三:引用1楼rocmemory的回复: 如果有的项目行有的项目不行,那问题就出在项目属性或config.

iOS10最新实现远程通知的开发教程详解_IOS

一.iOS推送通知简介 众所周知苹果的推送通知从iOS3开始出现, 每一年都会更新一些新的用法. 譬如iOS7出现的Silent remote notifications(远程静默推送), iOS8出现的Category(分类, 也可称之为快捷回复), iOS9出现的Text Input action(文本框快捷回复). 而在iOS10, 苹果可谓是大刀阔斧般的, 对远程通知和本地通知进行了大范围的更新. iOS10推出了全新的UserNotifications框架(iOS10之前从属于UIKi

iOS9中如何注册远程通知

大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请多提意见,如果觉得不错请多多支持点赞.谢谢! hopy ;) 在以往的版本中,我们可以通过: [[UIApplication sharedApplication] registerForRemoteNotificationTypes:some types] 来注册远程通知,不过很快该方法就被标记为废弃,并且提示我们要用另一个类似的方法: UIUserNotificationSettings *settings = [UI

linux下rsync同步本地到远程的shell脚本

手动同步 rsync_ssh.sh文件代码 #!/bin/bash PRG="$0" while [ -h "$PRG" ] ; do   ls=`ls -ld "$PRG"`   link=`expr "$ls" : '.*-> \(.*\)$'`   if expr "$link" : '/.*' > /dev/null; then     PRG="$link"   e

灵活使用EJB的本地和远程接口(一)

引言 随着 EJB 2.0 规范的出现,Enterprise Java Bean 可以有本地接口.远程接口,或同时有两种接口,这给 J2EE 开发人员和架构师提供了非常大的灵活性.实现两种接口给予 Bean 客户端和 Bean 本身在开发场景方面的自由.取决于客户端与 EJB 的相对位置,可以设置访问 Bean 的逻辑的最佳方式.本地接口提供对 EJB 的优化访问(如果客户端和 Bean 位于同一 Java 虚拟机(Java Virtual Machine,JVM)中),而远程接口可以用于分布式

php-PHP本地调试,域名配置

问题描述 PHP本地调试,域名配置 现PHP源码需要在本地调试更改布局,但源码进行了域名限制并加密,无法查看更改结果,哪位可以告诉一下域名的配置问题. 解决方案 那要看是什么框架的源码了,一般可以有两个地方控制:入口文件(或者里面用到的函数中),还有就是专门配置参数的文件,一般叫做config.php或者config.xml中:数据库中配置前台后台的访问路径的的表格中

远程连接-本地连接远程服务器数据库的问题

问题描述 本地连接远程服务器数据库的问题 本地应用phpstudy搭建的,php访问数据库正常.远程连接出问题.空间和数据库是申请万网的.我扫了一下数据库服务地址发现3306端口没有开放.请问:1,我是不是必须要联系运营商开放3306端口?2,我网站后台是linux系统,数据库服务器和后台并非一个ip地址..所以我不清楚的是php中连接数据库会因为操作系统不同而致使访问程序不同吗?3,我看了一些关于数据库授权的材料但是不深入,请问授权能够解决""连接不上服务器响应超时"&qu

微信本地调试方法

1.电脑和手机处于同一个WIFI中,电脑用Charles开代理,通过host绑定本地ip/远程测试ip到目标域名: 2.微信后台设置目标域名为安全域名(这个操作需要一分钟左右生效): 3.手机连接到同一个WIFI,走电脑的代理和端口,然后在微信里面打开目标域名下的相应页面,这个时候应该能在Charles看到请求了.     详细:   1.电脑IP:192.168.36.101,手机IP:192.168.36.148.修改HOSTS,windows位于C:\Windows\System32\dr