在我的应用程序中,我正在实施推送通知服务 我有一个Content Provider服务器,其中包含一些产品 我已生成SSL客户端证书并将其附加到我的开发配置文件。此个人资料也会添加到我的申请中 我已经在委托方法中编写了代码(由Apple指南实施推送通知)。全部设定。
现在我想测试我的应用程序是否按照要求处理推送通知。关于如何测试它的任何想法都会对我有所帮助 我是否必须将新产品添加到内容提供商服务器以进行测试?
如果是,APNS将推送通知发送到我的设备需要多少钱?
答案 0 :(得分:63)
我尝试了上述所有3条建议但没有成功。如果其他人最终在这里寻找解决方案,我发现了这个并且效果很好:
答案 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
答案 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.com和https://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,在终端中运行以下命令。
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 安装休斯顿
转到 pem 文件文件夹并从该文件夹打开终端。
像下面这样运行命令
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 "测试"
完成。