如何测试推送通知正在我的应用程序中工作

时间:2011-09-09 11:58:26

标签: ios objective-c push-notification

在我的应用程序中,我正在实施推送通知服务 我有一个Content Provider服务器,其中包含一些产品 我已生成SSL客户端证书并将其附加到我的开发配置文件。此个人资料也会添加到我的申请中 我已经在委托方法中编写了代码(由Apple指南实施推送通知)。全部设定。

现在我想测试我的应用程序是否按照要求处理推送通知。关于如何测试它的任何想法都会对我有所帮助 我是否必须将新产品添加到内容提供商服务器以进行测试?

如果是,APNS将推送通知发送到我的设备需要多少钱?

11 个答案:

答案 0 :(得分:63)

我尝试了上述所有3条建议但没有成功。如果其他人最终在这里寻找解决方案,我发现了这个并且效果很好:

Pusher https://github.com/noodlewerk/NWPusher

答案 1 :(得分:24)

非常酷的指南发布在这里:Programming Apple Push Notification Services

此处的应用程序:PushMeBaby Mac Os App您可以下载并用于从Mac向您的设备发送推送通知。

只要您的设备可用,APNS就会立即向您的设备发送推送通知。如果我没弄错的话,你的设备每分钟都会ping APNS。

答案 2 :(得分:7)

curl

怎么样?
curl -d '{"aps":{"alert":"This is a test notification"}}' --cert YourCertificate.pem:YourPassword -H "apns-topic: com.example.yourapp" --http2  https://api.development.push.apple.com/3/device/YourDeviceToken

首先,您需要curl支持http2 您需要使用pem将推送证书转换为openssl格式。

答案 3 :(得分:6)

您应该尝试 PushMeBaby 的分支,它对我有用。

答案 4 :(得分:6)

如果您想通过APNS支持基于证书和令牌的身份验证,那么您可以尝试Push Notifications

enter image description here

答案 5 :(得分:4)

尝试使用此在线应用程序,您可以通过该应用程序粘贴设备令牌并提供证书,因此将推送通知发送到任何设备,并允许您自定义数据。 http://pushmebaby.herokuapp.com

答案 6 :(得分:2)

你可以使用APNS测试仪,它是Mac Machine测试APNS的一个很好的工具 链接下载this软件。 您需要提供两件事来测试推送通知

1.APNS证书(.cer文件) 2.用户的iOS设备的设备令牌

答案 7 :(得分:1)

当我在Xcode8中测试iOS10时,PushMeBaby被冻结。试试NWPusher,https://github.com/noodlewerk/NWPusher。一个友好而简单的GUI工具。

答案 8 :(得分:0)

如果您使用google,则会看到许多这样做的网站。 我通常使用https://www.apnstester.comhttps://www.pushty.com

答案 9 :(得分:0)

我创建了一个小脚本来实现

import json
import jwt
import time

from hyper import HTTPConnection

ALGORITHM = 'ES256'

# fill these items
APNS_KEY_ID = ''
TEAM_ID = ''
BUNDLE_ID = ''

# put path to p8 file
APNS_AUTH_KEY = ''

# put device token id (of the notification receiver)
REGISTRATION_ID = ''

# let's do the magic :)
f = open(APNS_AUTH_KEY)
secret = f.read()

token = jwt.encode(
    {
        'iss': TEAM_ID,
        'iat': time.time()
    },
    secret,
    algorithm= ALGORITHM,
    headers={
       'alg': ALGORITHM,
        'kid': APNS_KEY_ID,
   }
)

path = '/3/device/{0}'.format(REGISTRATION_ID)

equest_headers = {
'apns-expiration': '0',
'apns-priority': '10',
'apns-topic': BUNDLE_ID,
'authorization': 'bearer {0}'.format(token.decode('ascii'))
}

connection = HTTPConnection('api.development.push.apple.com:443')

# put the payload you need
payload_data = {
'aps': {
 'content-available': '1',
 },
}
payload = json.dumps(payload_data).encode('utf-8')

connection.request(
'POST',
path,
payload,
headers=request_headers
)
resp = connection.get_response()

print(resp.status)
print(resp.read())

https://gist.github.com/IvanivOleg/7ba4072128b2c05a068a6826be68a3d3

答案 10 :(得分:0)

使用终端通过单行命令测试推送通知

在 Mac 中安装 Houston,在终端中运行以下命令。

  1. gem 安装休斯顿

    如果您遇到这样的错误,

    正在获取 houston-2.4.0.gem 错误:执行 gem 时 ... (Gem::FilePermissionError) 您没有 /Library/Ruby/Gems/2.6.0 目录的写入权限。

    首先在终端中运行以下命令来安装 Ruby

    brew install ruby​​

    导出 GEM_HOME="$HOME/.gem"

    gem 安装导轨

    安装成功后再次运行

    gem 安装休斯顿

  2. 转到 pem 文件文件夹并从该文件夹打开终端。

  3. 像下面这样运行命令

    apn push "设备令牌" -c PEM_FILE_NAME -m "MESSAGE"

    喜欢:

    apn push "5a4b74d5e5fc325b14d2f2641aa11bfb9744d1f88922822a5ed3512376d5f5b9" -c myapp_apns_dev.pem -m "测试"

成功运行上述命令后,它会询问 PEM 密码短语,即您的 pem 文件的密码。

如果您的应用已上线,则使用生产 pem 文件名

这样,

apn push "5a4b74d5e5fc325b14d2f2641aa11bfb9744d1f88922822a5ed3512376d5f5b9" -c myapp_apns_pro.pem -m "测试"

完成。