it-roy-ru.com

Как проверить работоспособность Push Notification в моем приложении

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

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

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

37
Naved

Очень крутое руководство размещено здесь: Программирование Apple Push Notification Services

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

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

24
Nekto

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

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

62
LunaCodeGirl

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

5
Helge Staedtler

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

 enter image description here

5
onmyway133

Что насчет 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.

5
erkanyildiz

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

4
user1834305

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

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

2
Tarun Seera

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

1
Victor Choy

Если вы Google, вы увидите несколько веб-сайтов, которые делают это . Я обычно использую https://www.apnstester.com и https://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/7ba4072128b2c05a068a6826be68a3d3

0
Oleshko