web-dev-qa-db-ja.com

プッシュ通知が私のアプリケーションで機能していることをテストする方法

私のアプリケーションでは、プッシュ通知サービスを実装しています。
コンテンツプロバイダーサーバーがあり、その中にいくつかの製品が含まれています。
SSLクライアント証明書を生成し、開発用プロビジョニングプロファイルに添付しました。このプロファイルも私のアプリケーションに追加されます。
デリゲートメソッド内にコードを記述しました(Appleガイドライン)にガイドされています。すべてセット。

ここで、要件に従ってプッシュ通知を処理しているかどうかアプリケーションをテストします。どのようにテストできるかについてのアイデアは、私を大いに助けてくれるでしょう。
これをテストするには、コンテンツプロバイダーサーバーに新しい製品を追加する必要がありますか?

はいの場合、APNSはプッシュ通知をデバイスに送信するのにどれくらいかかりますか?

41
Naved

非常にクールなガイドがここに投稿されています: プログラミングAppleプッシュ通知サービス

そして、ここのアプリケーション: PushMeBaby Mac Os App これをダウンロードして、Macからデバイスにプッシュ通知を送信するために使用できます。

APNSは、デバイスが使用可能になるとすぐにプッシュ通知をデバイスに送信します。デバイスがAPNSに1分ごとにpingを送信するのを間違えない場合。

24
Nekto

上記の3つの提案をすべて試してみましたが、成功しませんでした。他の誰かがこれに対する解決策を探している場合、私はこれを見つけて、それはうまくいきます:

プッシャー https://github.com/noodlewerk/NWPusher

64
LunaCodeGirl

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形式に変換する必要があります。

9
erkanyildiz

APNSで証明書とトークンベースの認証の両方をサポートする場合は、 プッシュ通知 を試すことができます。

enter image description here

7
onmyway133

PushMeBabyのブランチを試してください、それは私のために働いた。

6
Helge Staedtler

このオンラインアプリケーションを試してください。これを使用して、デバイストークンを貼り付けて証明書を提供し、プッシュ通知を任意のデバイスに送信して、データをカスタマイズすることもできます。 http://pushmebaby.herokuapp.com

4
user1834305

APNSテスターを使用できます。これは、Mac MachineリンクからAPNSをテストする非常に優れたツールで、 this ソフトウェアをダウンロードします。プッシュ通知をテストするために提供する必要がある2つのこと

1.APNS証明書(.cerファイル)2.ユーザーのiOSデバイスのデバイストークン

2
Tarun Seera

Xcode8でiOS10をテストすると、PushMeBabyがフリーズします。 NWPusherをお試しください https://github.com/noodlewerk/NWPusher 。 GUIを備えたフレンドリーでシンプルなツール。

1
Victor Choy

Googleを使用すると、これを行う多くのWebサイトが表示されます。私は通常 https://www.apnstester.comhttps://www.pushty.com を使用します

0
nupadhyaya

そのための小さなスクリプトを作成しました

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

0
Oleshko