Как проверить работоспособность Push Notification в моем приложении - PullRequest
41 голосов
/ 09 сентября 2011

В моем приложении я внедряю службу push-уведомлений.
У меня есть сервер контент-провайдера, в котором есть некоторые продукты.
Я создал сертификат клиента SSL и прикрепил его к своему профилю обеспечения разработки. Этот профиль также добавлен в мое приложение.
Я написал код внутри методов делегата (руководствуясь рекомендациями Apple по реализации Push-уведомлений). Все готово.

Теперь я хочу проверить свое приложение, передает ли оно push-уведомление согласно требованию. Любая идея о том, как я могу проверить это, очень мне поможет.
Нужно ли добавлять новый продукт на сервер контент-провайдера, чтобы проверить это?

Если да, сколько потребуется APNS для отправки push-уведомления на мое устройство?

Ответы [ 10 ]

63 голосов
/ 25 июля 2014

Я попробовал все 3 из вышеперечисленных предложений безуспешно. На случай, если кто-то еще придет сюда в поисках решения, я нашел это, и оно прекрасно работает:

Толкатель https://github.com/noodlewerk/NWPusher

24 голосов
/ 09 сентября 2011

Здесь размещено очень крутое руководство: Программирование служб push-уведомлений Apple

И приложение здесь: Приложение PushMeBaby Mac Os , которое вы можете загрузить и использовать для отправки push-уведомлений на ваши устройства с Mac.

APNS отправит push-уведомление на ваше устройство, как только ваше устройство станет доступным. Если я не ошибаюсь, ваше устройство пингует APNS каждую минуту.

9 голосов
/ 24 августа 2017

А как же 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.
И вам нужно конвертировать ваш push-сертификат в формат pem, используя openssl.

6 голосов
/ 08 сентября 2017

Если вы хотите поддерживать аутентификацию на основе сертификатов и токенов с APNS, вы можете попробовать Push-уведомления

enter image description here

6 голосов
/ 21 мая 2013

Вы должны попробовать ветку PushMeBaby , у меня это сработало.

4 голосов
/ 07 мая 2014

Попробуйте это онлайн-приложение, с помощью которого вы можете вставить токен своего устройства и предоставить сертификат, а также отправлять push-уведомления на любые устройства, что также позволяет настраивать данные. http://pushmebaby.herokuapp.com

2 голосов
/ 18 февраля 2016

Вы можете использовать тестер APNS, это очень хороший инструмент для тестирования APNS с Mac Machine по ссылке для загрузки этого программного обеспечения.2 вещи, которые необходимо предоставить для тестирования push-уведомлений

1.APNS сертификат (файл .cer) 2.Устройственный токен устройства iOS пользователя

1 голос
/ 21 сентября 2016

PushMeBaby зависает, когда я тестирую iOS10 в Xcode8. Попробуйте NWPusher, https://github.com/noodlewerk/NWPusher. Дружественный и простой инструмент с графическим интерфейсом.

0 голосов
/ 05 февраля 2019

Я создал небольшой скрипт для этого

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

0 голосов
/ 19 сентября 2018

Если вы Google, вы увидите несколько сайтов, которые делают это. Я обычно использую https://www.apnstester.com и https://www.pushty.com

...