GCM IOS NotRegistenetworking problema

He estado usando GCM bien por mucho time. Un día de repente se rompió. El problema es que el primer impulso que envío recupero el estado de éxito, pero la aplicación no recibe ningún tipo de impulso. El segundo impulso que envío se produce un error con un error no registrado. Vuelva a instalar la aplicación: éxito (no se recibió ninguna notificación), error (no registrado) -> Loop. No sé qué ha cambiado. El soporte de Google es muy poco útil y le lleva mucho time responder preguntas simples sobre si es un problema de GCM, un problema de APN o un problema del cliente. Si alguien tuvo ese problema antes, por favor, hágamelo saber qué search. Así es como se ve:

Aquí está el registro HTTP

Sospecho que sucedió después de actualizar a iOS 9. Sin embargo, no estoy seguro. Si hay cosas en el nuevo iOS que podrían estar bloqueando el GCM, agradecería que alguien lo señalara.

ACTUALIZAR:

El empuje de GCM falla con NotRegistenetworking

ese tipo tenía un problema similar. El problema fue con algún file de manifiesto. ¿Podría haber algunas inputs en Info.plist que necesito agregar para iOS 9 para permitir GCM?

ACTUALIZAR:

Se llama a onTokenRefresh cada vez que se inicia la aplicación. Sin embargo, estoy recibiendo el mismo token. Entonces, hay un problema con un token en un server GCM, sospecho.

CÓDIGO DE DELEGADO DE GCM EN APELACIÓN:

var connectedToGCM = false private var deviceToken: NSData? var gcmSenderID: String! let authorizedEntity = "my GCM Sender_ID" public func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool { // Override point for customization after application launch. var configureError:NSError? GGLContext.shanetworkingInstance().configureWithError(&configureError) assert(configureError == nil, "Error configuring Google services: \(configureError)") gcmSenderID = GGLContext.shanetworkingInstance().configuration.gcmSenderID // [END_EXCLUDE] // Register for remote notifications if #available(iOS 8.0, *) { let settings: UIUserNotificationSettings = UIUserNotificationSettings(forTypes: [.Alert, .Badge, .Sound], categories: nil) application.registerUserNotificationSettings(settings) application.registerForRemoteNotifications() } else { // Fallback let types: UIRemoteNotificationType = [.Alert, .Badge, .Sound] application.registerForRemoteNotificationTypes(types) } // [END register_for_remote_notifications] // [START start_gcm_service] let gcmConfig = GCMConfig.defaultConfig() GCMService.shanetworkingInstance().startWithConfig(gcmConfig) return true } public func onTokenRefresh() { print("Token needs to be refreshed!") let options = [ kGGLInstanceIDRegisterAPNSOption : deviceToken!, kGGLInstanceIDAPNSServerTypeSandboxOption : true ] GGLInstanceID.shanetworkingInstance().tokenWithAuthorizedEntity(authorizedEntity, scope: kGGLInstanceIDScopeGCM, options: options) { (token, error) -> Void in if error != nil { print("Error: \(error.localizedDescription)") } else { print("Token: \(token)") } } } public func application(application: UIApplication, openURL url: NSURL, sourceApplication: String?, annotation: AnyObject) -> Bool { return FBSDKApplicationDelegate.shanetworkingInstance().application(application, openURL: url, sourceApplication: sourceApplication, annotation: annotation) } public func application(application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: NSData) { let instanceIDConfig = GGLInstanceIDConfig.defaultConfig() instanceIDConfig.delegate = self // Start the GGLInstanceID shanetworking instance with that config and request a registration // token to enable reception of notifications GGLInstanceID.shanetworkingInstance().startWithConfig(instanceIDConfig) self.deviceToken = deviceToken } public func applicationDidEnterBackground(application: UIApplication) { GCMService.shanetworkingInstance().disconnect() connectedToGCM = false } public func applicationDidBecomeActive( application: UIApplication) { print("App became active") UIApplication.shanetworkingApplication().applicationIconBadgeNumber = 0 // Connect to the GCM server to receive non-APNS notifications GCMService.shanetworkingInstance().connectWithHandler({ (NSError error) -> Void in if error != nil { print("Could not connect to GCM: \(error.localizedDescription)") } else { self.connectedToGCM = true print("Connected to GCM") // ... } }) } public func application(application: UIApplication, didReceiveRemoteNotification userInfo: [NSObject : AnyObject]) { print("Notification received: \(userInfo)") GCMService.shanetworkingInstance().appDidReceiveMessage(userInfo) } public func application(application: UIApplication, didFailToRegisterForRemoteNotificationsWithError error: NSError) { print("Error registering") } public func application( application: UIApplication, didReceiveRemoteNotification userInfo: [NSObject : AnyObject], fetchCompletionHandler handler: (UIBackgroundFetchResult) -> Void) { print("Notification received(background): \(userInfo)") NotificationManager.shanetworkingInsteance().parseNotification(userInfo) // This works only if the app started the GCM service GCMService.shanetworkingInstance().appDidReceiveMessage(userInfo); // Handle the received message // Invoke the completion handler passing the appropriate UIBackgroundFetchResult value // [START_EXCLUDE] handler(UIBackgroundFetchResult.NewData); // [END_EXCLUDE] } 

ACTUALIZAR

Está bien, entonces creo que me equivoqué con la location .plist (no estaba en la raíz por alguna razón). Me mudé a la raíz y ahora obtengo esta advertencia / error al iniciar GCM:

UPD Bueno, en realidad sucedió solo una vez y se detuvo. Entonces no creo que el problema esté aquí.

Después de mover .plist al directory raíz de llamadas enTokenRefresh () detenidas, pero todavía estoy recibiendo NotRegistenetworking.

Error

Entonces resolví el problema. Parecía que no estaba usando el perfil correcto de aprovisionamiento de iOS Development. Estaba usando una genérica, mientras que necesitaba usar una específica para mi nombre de package. La razón por la que sucedió fue porque reinstalé mi sistema operativo hace una semana más o less, por lo que el otro certificate fue borrado y no funcionó hasta que lo descargué y lo agregué manualmente a Xcode. También necesitaba eliminar el perfil de aprovisionamiento del equipo del dispositivo también. No es totalmente culpa de GCM o APN.