1

我终于得到了 UrbanAirship 的推送通知。但是现在我有一个问题,在这里搜索并找不到解决方案。

当应用程序正在运行并且我收到通知时,单击通知会将我带入应用程序,一切都很好。

当我杀死应用程序并收到通知时,应用程序会因 SIGKILL 而死。

这是日志:日志

好的,这是我的 appdelegate.m:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
//Init Airship launch options
NSLog(@"Before NSMutableDictionary");
NSMutableDictionary *takeOffOptions = [[NSMutableDictionary alloc] init];
[takeOffOptions setValue:launchOptions forKey:UAirshipTakeOffOptionsLaunchOptionsKey];

// Create Airship singleton that's used to talk to Urban Airship servers.
// Please populate AirshipConfig.plist with your info from http://go.urbanairship.com
NSLog(@"Before takeOff");
[UAirship takeOff:takeOffOptions];


// Register for notifications
NSLog(@"Before UIApplication");
[[UIApplication sharedApplication]
 registerForRemoteNotificationTypes:(UIRemoteNotificationTypeBadge |
                                     UIRemoteNotificationTypeSound |
                                     UIRemoteNotificationTypeAlert)];

NSLog(@"Before reset badge");
//reset badge
application.applicationIconBadgeNumber = 0;

self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
// Override point for customization after application launch.

self.viewController = [[ViewController alloc] initWithNibName:@"ViewController" bundle:nil];
self.window.rootViewController = self.viewController;

[self.window makeKeyAndVisible];



return YES;
}

-(void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken
{
NSLog(@"didRegisterForRemoteNotifications");
[[UAirship shared] registerDeviceToken:deviceToken];
}

-(void)application:(UIApplication *)application didFailToRegisterForRemoteNotificationsWithError:(NSError *)error
{
NSString *str = [NSString stringWithFormat: @"Error: %@", error];
NSLog(@"Error:%@",str); 
}

在此 Mac Mini 通过窗口之前,非常感谢您提供的任何帮助 :-)

4

2 回答 2

1

我认为这与 Urban Airship 无关。如果你:

  1. 创建一个全新的项目
  2. 插入您的设备
  3. 运行应用程序
  4. 从手机强制关闭应用程序(您可能必须尝试重新打开它)

您将收到相同的错误消息。

由于它发生在一个全新的项目中,甚至没有触及它,我认为这种行为是预期的。

于 2012-05-01T21:34:16.907 回答
0

你确实提到了...

当我杀死应用程序并收到通知时,应用程序会因 SIGKILL 而死。

我会检查你的 applicationDidBecomeActive:(UIApplication *)application 方法。苹果文档说...

调用此方法是为了让您的应用程序知道它已从非活动状态变为活动状态。这可能是因为您的应用程序是由用户或系统启动的。如果用户选择忽略将应用程序暂时发送到非活动状态的中断(例如来电或短信),应用程序也可以返回到活动状态。

您应该使用此方法重新启动应用程序处于非活动状态时暂停(或尚未启动)的所有任务。例如,您可以使用它来重新启动计时器或提高 OpenGL ES 帧速率。如果您的应用以前在后台,您还可以使用它来刷新应用的用户界面。

于 2013-10-29T05:24:24.900 回答