私のアプリケーションでは、プッシュ通知サービスを実装しています。
コンテンツプロバイダーサーバーがあり、その中にいくつかの製品が含まれています。
SSLクライアント証明書を生成し、開発用プロビジョニングプロファイルに添付しました。このプロファイルも私のアプリケーションに追加されます。
デリゲートメソッド内にコードを記述しました(Appleガイドライン)にガイドされています。すべてセット。
ここで、要件に従ってプッシュ通知を処理しているかどうかアプリケーションをテストします。どのようにテストできるかについてのアイデアは、私を大いに助けてくれるでしょう。
これをテストするには、コンテンツプロバイダーサーバーに新しい製品を追加する必要がありますか?
はいの場合、APNSはプッシュ通知をデバイスに送信するのにどれくらいかかりますか?
非常にクールなガイドがここに投稿されています: プログラミングAppleプッシュ通知サービス
そして、ここのアプリケーション: PushMeBaby Mac Os App これをダウンロードして、Macからデバイスにプッシュ通知を送信するために使用できます。
APNSは、デバイスが使用可能になるとすぐにプッシュ通知をデバイスに送信します。デバイスがAPNSに1分ごとにpingを送信するのを間違えない場合。
上記の3つの提案をすべて試してみましたが、成功しませんでした。他の誰かがこれに対する解決策を探している場合、私はこれを見つけて、それはうまくいきます:
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
まず、http2
をサポートするcurl
が必要です。
そして、pem
を使用してプッシュ証明書をopenssl
形式に変換する必要があります。
APNSで証明書とトークンベースの認証の両方をサポートする場合は、 プッシュ通知 を試すことができます。
PushMeBabyのブランチを試してください、それは私のために働いた。
このオンラインアプリケーションを試してください。これを使用して、デバイストークンを貼り付けて証明書を提供し、プッシュ通知を任意のデバイスに送信して、データをカスタマイズすることもできます。 http://pushmebaby.herokuapp.com
APNSテスターを使用できます。これは、Mac MachineリンクからAPNSをテストする非常に優れたツールで、 this ソフトウェアをダウンロードします。プッシュ通知をテストするために提供する必要がある2つのこと
1.APNS証明書(.cerファイル)2.ユーザーのiOSデバイスのデバイストークン
Xcode8でiOS10をテストすると、PushMeBabyがフリーズします。 NWPusherをお試しください https://github.com/noodlewerk/NWPusher 。 GUIを備えたフレンドリーでシンプルなツール。
Googleを使用すると、これを行う多くのWebサイトが表示されます。私は通常 https://www.apnstester.com と https://www.pushty.com を使用します
そのための小さなスクリプトを作成しました
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/7ba4072128b2c05a068a6826be68a3d