CloudKit + нет действительной ошибки права доступа к среде aps

Я пытаюсь использовать CloudKit подписки в своем приложении, но didReceiveRemoteNotification не срабатывает.

Я сохранил CKSubscription в CloudKit. Чтобы убедиться, что они существуют, когда приложение запускается, я рисую их, например:

<CKSubscription: 0x15576310; ; Query Subscription: recordType=DailyVote, predicate=TRUEPREDICATE, subscriptionOptions=7, subscriptionID=1FA456A6-9BA5-411D-97B9-1EB57121A5D0, zoneID=(null)> predicate: TRUEPREDICATE subscriptionType: (Enum Value) subscriptionOptions: C.CKSubscriptionOptions

Я пытаюсь зарегистрировать свое устройство на сервере APN, как apple doc рекомендует, но вызывается метод делегирования ошибки с сообщением:

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {

    application.registerUserNotificationSettings(UIUserNotificationSettings(forTypes: .Alert, categories: nil))
    application.registerForRemoteNotifications()

    return true
}

func application(application: UIApplication, didFailToRegisterForRemoteNotificationsWithError error: NSError) {

    println("error: \(error.localizedDescription)")
    //error: no valid aps-environment entitlement found for application
}
  • CloudKit возможность включена
  • У меня нет недействительного профиля обеспечения
  • Я проделал трюк: Xcode > Preferences > Accounts > pick your Account > pick your Team > View Details > PRESS REFRESH BUTTON
  • Я даже создал свежее приложение с новым iCloud Container, перенес всю логику, но ошибка та же и уведомление о подписке не работает.

person János    schedule 13.12.2014    source источник
comment
Вы уверены, что бэкэнд для push-уведомлений настроен правильно и отправляет push-уведомления?   -  person Vitalii Gozhenko    schedule 13.12.2014
comment
Если вы сделаете accountStatusWithCompletionHandler для контейнера, что он вернет? Возвращает статус Доступен?   -  person Edwin Vermeer    schedule 14.12.2014
comment
Он возвращает Available   -  person János    schedule 16.12.2014
comment
Возможно, ваш профиль подготовки настроен неправильно, или, возможно, это так, но Xcode использует другой профиль подготовки (у вас настроен автоматический выбор профиля?): stackoverflow.com/ вопросы/10987102/   -  person Abhi Beckert    schedule 16.12.2014
comment
Я удалил все лишние файлы предоставления, только один, действующий есть, отключил автовыбор профиля и выбрал его вручную   -  person János    schedule 17.12.2014
comment
Просто чтобы убедиться, что мы перечеркнули все наши точки и поставили точки над i... можете ли вы подтвердить, что служба push-уведомлений активна в профиле обеспечения? Вы получите эту ошибку, если она отключена. dropbox.com/s/hfps3h4sjpks6on/push-notificaions.png? дл=0   -  person Abhi Beckert    schedule 17.12.2014
comment
Я не нашел ключевое слово push в файле, я не настроил Push Notification в идентификаторах приложений на портале разработчиков, я красный, для CKSubscription это не нужно, .. странно, как вы думаете   -  person János    schedule 17.12.2014
comment
@Abhi Beckert, как на вашем изображении Dropbox, у меня он тоже отключен, но я почти на 100% уверен, что для использования CKSubscription мне не нужно настраивать CSR портала разработчиков и так далее ..   -  person János    schedule 17.12.2014
comment
Поскольку известно, что его отключение вызывает именно эту ошибку, вам следует хотя бы попытаться включить его.   -  person Abhi Beckert    schedule 17.12.2014
comment
@Abhi Beckert push-уведомления включены, профиль предоставления восстановлен, очищен, удален временный и т. д.. все еще получает aps-среду   -  person János    schedule 17.12.2014
comment
документ приложения говорит: You don’t need to enable push notifications for the app’s explicit App ID in Member Center to receive subscription notifications. Xcode automatically adds the APNs entitlement to your entitlement file when you enable CloudKit.   -  person János    schedule 17.12.2014
comment
@ Янош, хорошо, честно. Есть причина, по которой я разместил это как комментарий вместо ответа. Также не доверяйте документации, она часто неверна или применима только к старым версиям iOS. Вместо этого вы должны доверять реальному поведению — что вы и сделали сейчас. :-) Извините, на данный момент мне нечего предложить, разве что создать новый проект Xcode и попытаться воспроизвести ошибку.   -  person Abhi Beckert    schedule 17.12.2014


Ответы (2)


Несмотря на то, что Apple Doc говорит здесь: Вам не нужно включать push-уведомления для явного идентификатора приложения в Центре участников, чтобы получать уведомления о подписке. Xcode автоматически добавляет разрешение APN в ваш файл разрешений, когда вы включаете CloudKit.

Если вы добавите Push Notification в Developer Portal под App IDs, это сработает, или, по крайней мере, со второй попытки у меня это сработало.

person János    schedule 17.12.2014

ошибка в основном указывает на то, что профиль обеспечения, который вы использовали, не поддерживает среду aps, убедитесь, что вы обновили профиль обеспечения после внесения изменений в идентификатор своего приложения,

попробуйте это, откройте свой профиль Provisioning в текстовом редакторе и найдите следующее,

aps-окружение

если вы этого не найдете, проблема заключается в связанном профиле подготовки, если это так, попробуйте это ..

Как исправить недействительные 'aps- строка прав среды найдена для приложения в Xcode 4.3?

person Geet    schedule 23.12.2014