Parse [PFInstallation currentInstallation]返回nil

时间:2014-06-18 21:33:48

标签: ios objective-c push-notification parse-platform

我目前无法在现有的iOS应用上使用Parse(推送通知服务)。特别, [PFInstallation currentInstallation]始终返回零值。在我的didFinishLaunchingWithOptions方法中,我设置了

[Parse setApplicationId:parseAppID clientKey:parseClientKey];

但是,一旦调用了applicationDidRegisterForRemoteNotificationsWithDeviceToken方法,下面的代码将返回nil for currentInstallation。

PFInstallation *currentInstallation = [PFInstallation currentInstallation];
[currentInstallation setDeviceTokenFromData:_deviceToken];
[currentInstallation saveInBackground];

我不确定为什么会在尝试将此功能合并到现有应用中时发生这种情况。我正在做一些与空白应用程序相同的事情,而Parse在那里工作得很好。请注意,不会抛出任何错误。我只是在[PFInstallation currentInstallation]得到一个零回报,所以什么都没有保存。

任何帮助都会非常感激。

2 个答案:

答案 0 :(得分:2)

如果删除Parse Web控制台上的安装,则会发生这种情况。要解决此问题,您需要在手机上卸载并重新安装该应用程序,它应该重新开始工作。

答案 1 :(得分:1)

你应该做的第一件事是使用" saveInBackgroundWithBlock"而不是" saveInBackouground" :

[currentInstallation saveInBackgroundWithBlock:^(BOOL succeeded, NSError *error) {
   NSLog(@"success : %d  with error : %@",succeeded,error);
}];

这样,您将看到是否出现错误。

此外,在application:didFinishLaunchingWithOptions:方法中,您还应该调用

if ([[UIApplication sharedApplication] enabledRemoteNotificationTypes] != UIRemoteNotificationTypeNone) {
  [application registerForRemoteNotificationTypes:UIRemoteNotificationTypeBadge|UIRemoteNotificationTypeAlert|UIRemoteNotificationTypeSound];
}

这样每次启动应用程序时都会调用applicationDidRegisterForRemoteNotificationsWithDeviceToken方法。

最后,您应该确保已将这些库链接到您的应用程序:

- AudioToolbox.framework  
- CFNetwork.framework  
- CoreGraphics.framework  
- CoreLocation.framework  
- libz.dylib  
- MobileCoreServices.framework  
- QuartzCore.framework  
- Security.framework  
- StoreKit.framework  
- SystemConfiguration.framework