Я рву на себе волосы, пытаясь заставить push-уведомления работать! Я следую этому руководству, чтобы в основном не воспользоваться. Я несколько раз удалял xcode, переделывал весь сертификат разработчика Apple, несколько раз очищал цепочку ключей для входа в систему. Это помогло решить несколько проблем, но в конце концов я все еще застрял.
Что, по моему мнению, мне нужно сделать (из чтения опыта других людей с этим): 1) Мой сертификат и ключ openssl должны быть связаны с сервером Apple 2) Идентификатор приложения с этим сертификатом openssl имеет связанный с ним профиль обеспечения. 3) Сборка (в xcode) должна иметь соответствующий профиль обеспечения, связанный с ним 4) Идентификатор сборки (в xcode) должен иметь тот же текст, что и идентификатор приложения с профилем обеспечения 4) ???
Насколько я могу судить, все в порядке:
- Мой ssl-сертификат + ключ хорошо общаются с сервером Apple (игнорируйте ошибку, в конце концов я все равно получаю приглашение):
MacBook-Pro:apple_dev_certification nflacco$ openssl s_client -connect gateway.sandbox.push.apple.com:2195 -key xxx.pem -cert xxx.pem Введите парольную фразу для xxx.pem: CONNECTED(00000003) depth=1 /C= US/O=Entrust, Inc./OU=www.entrust.net/rpa включено по ссылке/OU=(c) 2009 Entrust, Inc./CN=Entrust Certification Authority — ошибка проверки L1C: число = 20: невозможно получить сертификат местного эмитента .....
2,3,4) Когда я создаю новый проект, он никогда не получает правильный IP-адрес приложения (настройки сборки-> идентификатор информационного пакета). Если мой профиль подготовки соответствует «com.xxx», тогда приложение всегда будет «com.xxx.FOO», поэтому выбирается профиль подготовки группы IOS по умолчанию. Я запускаю приложение таким образом и получаю:
2011-10-22 22:42:45.086 VVV[3552:707] Не удалось получить токен, ошибка: Error Domain = NSCocoaErrorDomain Code = 3000 «Для приложения не найдена действительная строка прав 'aps-environment'» UserInfo = 0x16d140 {NSLocalizedDescription = для приложения не найдена допустимая строка прав «aps-environment»}
4 (продолжение) Я хочу использовать свой профиль подготовки, который использует идентификатор моего приложения с включенной функцией push, поэтому я меняю идентификатор приложения на «com.xxx» и выбираю правильный профиль в параметре подписи кода в меню сборки. Установил на айфон, тоже самое :(
Единственное, о чем я могу думать:
- Мой профиль обеспечения неверен? Несколько раз делал новый, удалял все существующие в xcode Organizer, но это не помогло.
- Код по-прежнему подписывается с помощью профиля команды вместо моего нового? Есть ли способ убедиться в этом?
Любые идеи о том, что я должен делать здесь? Это не может быть так сложно. Должен ли я просто стереть свой HD и переустановить с нуля и надеяться, что это сработает?