Push Notification Issue в Adhoc Distribution
Здравствуйте, я новичок в IPhone.
Я работаю над приложением Iphone, которое успешно получает push-уведомления с средой разработки, но не получает уведомления в adhoc-дистрибутиве.
У меня есть оба сертификата, а также разработка и производство.
Может ли кто-нибудь сказать мне, что мне не хватает?
Ответы
Ответ 1
Как я опубликовал вчера как ответ на тот же вопрос: (prev. answer)
У меня похожие проблемы. После некоторого теста я сделал следующие выводы:
-
Если приложение (которое было скомпилировано с помощью development provision profile
) установлено, чем такое устройство имеет development token
, и вам следует отправить нажатие на такое устройство с помощью development certificate
.
-
Если приложение (которое было скомпилировано с помощью distribution provision profile
) установлено, чем такое устройство имеет production token
, и вы должны отправить нажатие на такое устройство с помощью production certificate
.
И, если ваше приложение еще не опубликовано, я думаю, что APNS
не примет production certificate
, поэтому, вероятно, вы не сможете отправить push в свои специальные приложения.
Что вы можете сделать? Например, отправленное приложение для ваших тестеров, скомпилированных с помощью development certificate
.
ОБНОВЛЕНО:
Я узнал этот вопрос еще раз и нашел интересную информацию:
- Загрузите
Ad-hoc provision profile
.
- Откройте профиль профиля с 1. с помощью текстового редактора.
- Поиск строк
<key>aps-environment</key>
<string>production</string>
- Проверьте значение клавиши
aps-environment
. Он равен production?
-
Если да, то вы должны отправить в свое объявление ad-hoc apps с помощью production certificate
.
Если значение development
, то вы должны отправить уведомление своего приложения ad-hoc приложения с development certificate
.
- Теперь откройте IOS Provisioning Portal → Имена приложений. Выберите свое приложение.
- Проверьте, включен ли
Production Push SSL Certificate
.
Если это не помогло вам, попробуйте обновить свой профиль подготовки ad-hoc.
Ответ 2
Push-уведомления иногда являются головной болью и состоят из множества элементов. Если вы пропустите что-то по пути, ваш PNS не будет работать, и будет очень сложно понять, почему. Как правило, просмотрите следующий контрольный список:
- Сертификат Push и закрытый ключ были сгенерированы правильно с правильным идентификатором приложения (тот же, к которому прикреплен профиль обеспечения).
- И сертификат, и закрытый ключ берутся из одного и того же загруженного сертификата PNS.
- Оба файла были правильно объединены в файл .pem.
- Ваше приложение обрабатывает push-уведомления, когда они входят, в то время как приложение активно.
В любом случае, я рекомендую использовать хороший учебник, например: http://mobiforge.com/developing/story/programming-apple-push-notification-services слово в слово. Удачи!
Ответ 3
Я столкнулся с тем же и потратил довольно много времени, пытаясь понять это. Я сгенерировал новый производственный сертификат, создал профиль подготовки Ad-Hoc (чтобы я мог тестировать с помощью push-уведомления, проходящего через производство), и ничего не работало вообще.
Я исправил push script (серверная сторона) соответственно (используя новые сгенерированные файлы .pem и подключение к ssl://gateway.push.apple.com: 2195). script рассказывал мне, что уведомление было доставлено, но мое устройство на самом деле не получало его.
Оказывается, проблема была действительно глупой! По-видимому, токены устройства изменяются при использовании приложения с новым сертификатом (либо через Ad-Hoc). Я могу только рассуждать о том, почему они изменились, но все, что я знаю, это то, что как только я схватил правильный токен и использовал свой тест script для отправки уведомления на устройство, я получил его!
Ответ 4
В дополнение к предположению от Nekto...
И, если ваше приложение еще не опубликовано, я думаю, что APNS не будет принимать производственный сертификат, поэтому, вероятно, вы не сможете отправить push в свои ad-hoc-приложения.
Тем временем я могу подтвердить, что можно получать push-уведомления в ad-hoc-приложениях, даже если приложение еще не опубликовано.
Ответ 5
Существует контрольный список, который следует учитывать при тестировании pushnotification для среды разработки. Большинство из них уже упоминалось выше. Но это одна вещь, КОТОРАЯ РЕШАЛА МОЙ ПРОБЛЕМ, и я хотел бы поделиться ею. Надеюсь, это поможет кому-то. И это:
Обратите внимание на идентификатор токена устройства, который отличается для разработки && & Производственная среда.
- (void)application:(UIApplication *)app didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken {
NSString *deviceTokenStr = [[[[deviceToken description]
stringByReplacingOccurrencesOfString: @"<" withString: @""]
stringByReplacingOccurrencesOfString: @">" withString: @""]
stringByReplacingOccurrencesOfString: @" " withString: @""];
UIAlertView *alert= [[UIAlertView alloc]initWithTitle:deviceTokenStr message:Nil delegate:self cancelButtonTitle:@"OK" otherButtonTitles: nil];
[alert show];
}
Ответ 6
Как я понимаю, вы не можете отправлять уведомления в сборку Ad Hoc с сертификатом разработки. Как вы можете себе представить, этот сценарий одобрен, пока вы не отпустите приложение. После того, как приложение будет выпущено, отправка уведомлений на специальную сборку, содержащую продукцию Cert, также отправит их владельцам приложений. То, как я обошел это, было:
- Создайте новое приложение в Apple, которое соответствует той же базовой линии, что и приложение в itunes.
- Создайте новый производственный ключ и сертификат для этого приложения phantom.
- Создайте новое приложение с новым производственным ключом и протестируйте его с помощью этой сборки.
Теперь у вас будет приложение, которое вы можете создать, чтобы специально тестировать уведомления. Не изящное решение, но оно работает.
Ответ 7
Я только что преодолел очень похожую проблему, и это оказалось чем-то, что, вероятно, должно было быть очевидным, но я отправлю его здесь на всякий случай, если кто-то еще будет таким же глупым, как я.
Я использую MoonAPNS
и могу получать уведомления о развитии, но не производство.
После нескольких дней кругов я вернулся к этой строке:
PushNotification push = new PushNotification(true, p12file, p12password);
Если ранее игнорировать параметр true
, отладка через код сервера показала, что это означает, следует ли использовать сервер Sandbox - D'Oh! Переключил его на false
, и все было хорошо.
Мораль истории: не забудьте указать свои уведомления на сервере, отличном от Sandbox!
Ответ 8
У меня такая же проблема, и после множества семенников, наконец, у меня возникла проблема.
Что из-за того, что сервер apns для производства Apple не позволяет файлу P12, который содержит данные закрытого ключа, больше. Но сервер разработки apns будет принимать файл P12, если он когда-либо содержит закрытый ключ.
Поэтому, когда вы экспортируете файл P12 из связки ключей, просто выберите свой файл производственного сертификата без закрытого ключа, и вы получите уведомления в своем adhoc-приложении (даже если они не опубликованы).
Ответ 9
Ответа на этот вопрос для 2016.10.13
У меня такая же проблема, что после того, как я изменил следующий следующий учебник:
https://support.magplus.com/hc/en-us/articles/203808718-iOS-Creating-a-Push-Notification-Certificate
Но все равно работать не удалось
После того, как я проверил код сервера и обнаружил, что
ssl: ssl://gateway.sandbox.push.apple.com:2195
Необходимо изменить на ssl://gateway.push.apple.com:2195
После изменения, я могу получить уведомление