Я создаю приложение, в котором я добавил средство для отправки сообщений на ваш аккаунт. Теперь к этому объекту я добавляю событие для планирования. С помощью этого пользователя можно написать сообщение и опубликовать его позже или в определенную дату и время. Для этого я использовал локальное событие уведомления, которое генерируется пользователем на заданную дату. Но проблема в том, что когда генерируется уведомление, я вызываю функцию, которая используется для отправки сообщения на Facebook. Для генерации уведомлений я использовал этот код:
-(IBAction)save{
NSString *str1=[NSString stringWithFormat:@"%@",txt_date.text];
NSString *str2=[NSString stringWithFormat:@" %@",txt_time.text];
str1=[str1 stringByAppendingFormat:str2];
selected_label.text= str1;
[[UIApplication sharedApplication] cancelAllLocalNotifications];
NSDate *today=[NSDate date];
NSDateFormatter* formatter_current = [[[NSDateFormatter alloc] init] autorelease];
formatter_current.timeZone = [NSTimeZone timeZoneWithAbbreviation:@"GMT"];
//Set the required date format
[formatter_current setDateFormat:@"yyyy-MM-dd hh:mm a"];
NSLog(@"current date is =%@",str1);
today=[formatter_current dateFromString:str1];
NSLog(@"current date:-%@",today);
UILocalNotification* ln = [[UILocalNotification alloc] init];
ln.alertBody = @"Wake Up Sid";
ln.applicationIconBadgeNumber = 1;
ln.fireDate = today; //[NSDate dateWithTimeIntervalSinceNow:15];
ln.timeZone = [NSTimeZone timeZoneWithAbbreviation:@"GMT"];
NSLog(@"alarm will activate on%@",today);
NSDateFormatter* formatter_alarm = [[[NSDateFormatter alloc] init] autorelease];
NSLocale *uslocale = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US"];
[formatter_alarm setLocale:uslocale];
[uslocale release];
formatter_alarm.timeZone = [NSTimeZone timeZoneWithAbbreviation:@"GMT"];
[formatter_alarm setDateFormat:@"hh:mm a"];
NSString *str=[formatter_alarm stringFromDate:today];
NSLog(@"%@",str);
ln.alertBody = [NSString stringWithFormat:@"Your first appointment at %@",str];
ln.soundName = UILocalNotificationDefaultSoundName;
ln.repeatInterval=NSDayCalendarUnit;
[[UIApplication sharedApplication] scheduleLocalNotification:ln];
[ln release];
}
и в файле appdelegate я использую эту функцию для получения уведомлений и функцию сообщения о вызове:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{
// Override point for customization after application launch.
self.viewController=[[demo_social_updatesViewController alloc]initWithNibName:@"demo_social_updatesViewController" bundle:nil];
nav_controller=[[UINavigationController alloc] initWithRootViewController:self.viewController];
// Add the view controller's view to the window and display.
[self.window addSubview:nav_controller.view];
[self.window makeKeyAndVisible];
appDelegate_acess_token=[[NSUserDefaults standardUserDefaults] stringForKey:@"access_token"];
application.applicationIconBadgeNumber = 0;
// Handle launching from a notification
UILocalNotification *localNotif =
[launchOptions objectForKey:UIApplicationLaunchOptionsLocalNotificationKey];
if (localNotif) {
NSLog(@"Recieved Notification %@",localNotif);
}
return YES;
}
- (void)applicationDidEnterBackground:(UIApplication *)application{
if (application.applicationIconBadgeNumber == 1) {
BOOL tmp=[Global_Class_parsing post_comment_fb:appDelegate_acess_token uesr_comment:@"testing message111"];
if(tmp){
UIAlertView *av = [[[UIAlertView alloc] initWithTitle:@"Sucessfully posted to photos & wall!"
message:@"Check out your Facebook to see!"
delegate:nil
cancelButtonTitle:@"OK"
otherButtonTitles:nil] autorelease];
[av show];
}
else{
UIAlertView *av = [[[UIAlertView alloc] initWithTitle:@"error"message:@"Check connection!"
delegate:nil
cancelButtonTitle:@"OK"
otherButtonTitles:nil] autorelease];
[av show];
}
}
/*
Use this method to release shared resources, save user data, invalidate timers, and store enough application state information to restore your application to its current state in case it is terminated later.
If your application supports background execution, this method is called instead of applicationWillTerminate: when the user quits.
*/
}
- (void)applicationWillEnterForeground:(UIApplication *)application{
/*
Called as part of the transition from the background to the active state; here you can undo many of the changes made on entering the background.
*/
if (application.applicationIconBadgeNumber == 1) {
BOOL tmp=[Global_Class_parsing post_comment_fb:appDelegate_acess_token uesr_comment:@"testing message111"];
if(tmp){
UIAlertView *av = [[[UIAlertView alloc] initWithTitle:@"Sucessfully posted to photos & wall!"
message:@"Check out your Facebook to see!"
delegate:nil
cancelButtonTitle:@"OK"
otherButtonTitles:nil] autorelease];
[av show];
}
else{
UIAlertView *av = [[[UIAlertView alloc] initWithTitle:@"error"message:@"Check connection!"
delegate:nil
cancelButtonTitle:@"OK"
otherButtonTitles:nil] autorelease];
[av show];
}
}
}
- (void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification {
UIApplicationState state = [application applicationState];
if (state == UIApplicationStateInactive) {
NSLog(@"Recieved Notification %@",notification);
} else {
NSLog(@"Recieved Notification method call.");
}
}
Теперь проблема в том, что когда генерируется уведомление, а номер приложения становится равным 1, тогда он не вызывает никакой функции, и моя функция сообщения не вызывает. Так как я могу исправить эту ошибку?