Campos que faltan al save el object Parse PFInstallation

Estoy guardando un object PFInstallation en la aplicación: didFinishLaunchingWithOptions – No estoy pidiendo al usuario permissions de inserción ni nada que ver con un dispositivoToken – y estoy descubriendo que muchos de los campos estándar se están despoblando, incluyendo:

  • appidentificador
  • version de aplicacion
  • nombre de la aplicación
  • distintivo
  • parseVersion
  • zona horaria

(Estas columnas no están definidas en el buscador de datos y no se muestran en un NSLog del object PFInstallation).

  • deviceType se rellena

Estoy agarrando y guardando con éxito el dispositivo Model y deviceOS a dos columnas personalizadas. Pero estoy un poco desconcertado sobre por qué las columnas anteriores se dejan sin definir.

Aquí está el código:

[Parse setApplicationId:PARSE_APPID_DEV clientKey:PARSE_CLIENTKEY_DEV]; // record device model and OS NSString *model = [self getDeviceModelAndNumber]; // via sys/utsname.h NSString *sysVersion = [[UIDevice currentDevice] systemVersion]; PFInstallation *currentInstallation = [PFInstallation currentInstallation]; PFUser *loggedUser = [PFUser currentUser]; if (loggedUser) [currentInstallation setObject:loggedUser forKey:@"user"]; [currentInstallation setObject:model forKey:@"deviceModel"]; [currentInstallation setObject:sysVersion forKey:@"deviceOS"]; NSLog(@"installation: %@", currentInstallation); [currentInstallation saveInBackground]; 

Este proyecto se creó en Xcode 6. En un proyecto diferente, creado en Xcode 5, estoy haciendo esencialmente lo mismo, y las columnas se rellenan y se guardan correctamente.

¿Alguien más encuentra esto? Lo busqué en Google bastante pero no encontré una solución. Cualquier ayuda muy apreciada.

Después de muchos experimentos, parece que (notablemente) cambiar la última línea a

 [currentInstallation saveInBackgroundWithBlock:^(BOOL succeeded, NSError *error) { // some logging code here }]; 

resuelve el problema Entonces supongo que debería presentar un error con Parse. (De hecho, ya hay una abierta: https://developers.facebook.com/bugs/712949858787516/ )

Esto funciona perfectamente para mí:

 (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken { // Store the deviceToken in the current installation and save it to Parse. PFInstallation *currentInstallation = [PFInstallation currentInstallation]; [currentInstallation setDeviceTokenFromData:deviceToken]; currentInstallation.channels = @[ @"YOU_CHANNEL_PREFERENCE" ]; NSLog(@"currentInstallation %@", currentInstallation); // record device model and OS NSString *model = [[UIDevice currentDevice] model]; // deviceModel NSString *osVersion = [[UIDevice currentDevice] systemVersion]; // osVersion NSString *pushType = @"APN"; // pushType NSString *deviceName = [[UIDevice currentDevice] name]; // deviceName [currentInstallation setObject:model forKey:@"deviceModel"]; [currentInstallation setObject:osVersion forKey:@"osVersion"]; [currentInstallation setObject:pushType forKey:@"pushType"]; [currentInstallation setObject:deviceName forKey:@"deviceName"]; NSLog(@"installation: %@", currentInstallation); [currentInstallation saveInBackgroundWithBlock:^(BOOL succeeded, NSError *error) { // some logging code here NSLog(@"works"); }]; }