Подтвердить что ты не робот

AWS Mobile HUD AWS SNS pushManagerDidRegister, но конечная точка не создана

Я использую AWS Mobile HUD с AWS SNS и сталкиваюсь с проблемами.

Что работает/уже сделано

  • успешно создан универсальный сертификат p12
  • ресурсы на AWS SNS, созданные с помощью Mobile HUD
  • тема, созданная с помощью Mobile HUD
  • интегрированный код в проект
  • интегрированный plist

следующий код должен зарегистрировать приложение (устройство) с помощью AWS SNS:

pushManager = AWSPushManager(forKey: ServiceKey)
pushManager?.delegate = self
pushManager?.registerForPushNotifications()

и - достаточно значительно func pushManagerDidRegister(_ pushManager: AWSPushManager), что указывает на успех. Мой func pushManagerDidRegister(_ pushManager: AWSPushManager) выглядит как fo

func pushManagerDidRegister(_ pushManager: AWSPushManager) {
    print("Successfully enabled Push Notifications on platform: \(pushManager.platformARN)")
    // Subscribe the first topic among the configured topics (all-device topic)
    if let defaultSubscribeTopic = pushManager.topicARNs?.first {
        let topic = pushManager.topic(forTopicARN: defaultSubscribeTopic)
        topic.subscribe()
    }
}

вывод журнала:

Successfully enabled Push Notifications on platform: Optional("arn:aws:sns:eu-central-1:00000000:app/APNS/appname_MOBILEHUD_12345678")

но: в ресурсе SNS AWS в этом приложении /platformARN не создается конечная точка

Интересные факты (возможно, причина)

  • Конфигурация сборки DEBUG
  • Записанная платформаARN - RELEASE, а не DEBUG

edit: После игры с различными быстрыми флагами компилятора мне удалось установить корреляцию окружения. Теперь я получаю регистрацию, что регистрация прошла успешно в среде Sandbox. Но: до сих пор нет конечной точки, созданной на AWS SNS.

какие-либо идеи о том, как я мог продолжить? Я пробовал в течение 2 дней, включая повторную сертификацию, восстановление AWS, бесконечное ведение журнала;)

4b9b3361

Ответ 1

Я нашел ответ здесь: Ошибка интеграции службы уведомлений AWS

Проблема заключалась в отсутствии привилегий на AWS Mobile HUB. К сожалению, никакой разумной ошибки не было создано;)

Добавление политики AmazonSNSFullAccess решило ее.

Ответ 2

поэтому я искал проблему в документах и ​​их github. Что я заметил, что они используют AWSSNSCreatePlatformEndpointInput, которого у вас нет, также вы должны получить токен устройства из func application(application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: NSData) и зарегистрировать его.

в любом случае это должно быть что-то вроде этого

func application(application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: NSData) {

let deviceTokenString = "\(deviceToken)".stringByTrimmingCharactersInSet(NSCharacterSet(charactersInString:"<>"))
    .stringByReplacingOccurrencesOfString(" ", withString: "")
print("deviceTokenString: \(deviceTokenString)")
NSUserDefaults.standardUserDefaults().setObject(deviceTokenString, forKey: "deviceToken")
mainViewController()?.displayDeviceInfo()

let sns = AWSSNS.defaultSNS()
let request = AWSSNSCreatePlatformEndpointInput()
request.token = deviceTokenString
request.platformApplicationArn = SNSPlatformApplicationArn
sns.createPlatformEndpoint(request).continueWith(executor: AWSExecutor.mainThreadExecutor(), block: { (task: AWSTask!) -> AnyObject! in
    if task.error != nil {
        print("Error: \(task.error)")
    } else {
        let createEndpointResponse = task.result as! AWSSNSCreateEndpointResponse
        print("endpointArn: \(createEndpointResponse.endpointArn)")
        NSUserDefaults.standardUserDefaults().setObject(createEndpointResponse.endpointArn, forKey: "endpointArn")
        self.mainViewController()?.displayDeviceInfo()
    }

    return nil
})
}

пожалуйста, обновите меня, что произошло и удачи