2017-05-31 49 views
11

Używam AWS Mobile HUD z AWS SNS i mam problemy.AWS Mobile HUD AWS SNS pushManagerDidRegister, ale punkt końcowy nie został utworzony

Co działa/zrobiono już

  • pomyślnie utworzone P12 uniwersalny certyfikat
  • zasobów na AWS SNS utworzony pomyślnie przez Mobile HUD
  • wątek utworzony pomyślnie przez Mobile HUD
  • zintegrowany kod do projektu
  • zintegrowany plist

poniższy kod należy zarejestrować aplikację (urządzenia) z AWS SNS:

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

i - znacznie wystarczająco func pushManagerDidRegister(_ pushManager: AWSPushManager) nazywa, wskazując sukces. Moja func pushManagerDidRegister(_ pushManager: AWSPushManager) wygląda jak 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() 
    } 
} 

wyjście dziennika:

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

ale: na AWS SNS zasobu nie końcowy jest tworzony w tej aplikacji/platformARN

Ciekawostki (może być powodem)

  • Konfiguracja konfiguracji to DEBUG
  • Zapisane platformARN jest zwolnić i nie DEBUG

edit: Po zabawy z różnych flag kompilatora Swift udało mi się ustawić correclty środowiska. Teraz otrzymuję rejestrację, że rejestracja zakończyła się pomyślnie w środowisku Sandbox. Ale: nadal nie ma punktu końcowego utworzonego na AWS SNS.

wszelkie pomysły na to, jak mogę postępować? Próbowałem przez 2 dni, w tym recertyfikację, przebudowę AWS, niekończące się logowanie;)

+0

Nie jestem zaznajomiony z tym, co próbujesz zrobić, tylko próbujesz pomóc. Ale po przeczytaniu dokumentacji na temat AWNS SNS, wspomina o tokenie urządzenia, który musi zostać wysłany do AWNS SNS, aby został zarejestrowany jako punkt końcowy. Nie widzę tego w podanym kodzie. –

+0

@JackG. dziękuję za zainteresowanie moimi kłopotami - powinno to być obsługiwane przez wywołanie 'registerForPushNotifications' (3. linia w moim kodzie). Jest to funkcja ramowa AWNS SNS, która powinna zrobić wszystko. –

Odpowiedz

2

, więc szukałem problemu w dokumentach i ich github. Co zauważyłem, że używają AWSSNSCreatePlatformEndpointInput, którego nie masz, również musisz pobrać token urządzenia od func application(application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: NSData) i zarejestrować go.

i tak powinno być coś takiego

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 
}) 
} 

proszę zaktualizować mnie, co się stało i powodzenia

+0

To jest podejście, jeśli używasz SNS wanilii, ale używam AWS MObileHUB, który powinien obsługiwać tę część na własną:/ –

+0

Przepraszam za ten błąd. –