UIlocalNotification pojawiło się teraz bez uruchamiania zadania w tle
Mam aplikację VoIP.
ja używamUILocalNotification
w mojej aplikacji do powiadamiania o powiadomieniu o połączeniu przychodzącym, gdy aplikacja jest w tle.
Gdy aplikacja jest w tle, po otrzymaniu połączenia przychodzącego następuje wywołanie funkcji.
-(void)showLocalNotification:(NSNotification *)notification {
NSDictionary *dic = notification.userInfo;
NSString *msg = [dic objectForKey:@"msg"];
NSString *sound = [dic objectForKey:@"sound"];
[[UIApplication sharedApplication] cancelAllLocalNotifications];
UILocalNotification *_localNotification = [[UILocalNotification alloc]init];
//setting the fire dat of the local notification
_localNotification.fireDate = [NSDate dateWithTimeIntervalSinceNow:1];
//setting the time zone
_localNotification.timeZone = [NSTimeZone defaultTimeZone];
//setting the message to display
_localNotification.alertBody = msg;
//default notification sound
if ([sound length]==0) {
_localNotification.soundName = UILocalNotificationDefaultSoundName;
} else {
_localNotification.alertAction = NSLocalizedString(@"Receive", nil);
_localNotification.soundName = @"myringtone.aif";
}
//displaying the badge number
_localNotification.applicationIconBadgeNumber = [[UIApplication sharedApplication]applicationIconBadgeNumber]+1;
//schedule a notification at its specified time with the help of the app delegate
[[UIApplication sharedApplication]scheduleLocalNotification:_localNotification];
}
Ta funkcja ustawia harmonogram Powiadomienie lokalne, aby wyświetlić alert za pomocą dwóch przyciskówCancel
iReceive
który strzela po sekundzie.
Teraz problemem jest:
To lokalne powiadomienie pojawia się użytkownikowi tylko wtedy, gdy zadanie w tle rozpoczęło się w następujący sposób
- (void)applicationDidEnterBackground:(UIApplication *)application
{
UIApplication* app = [UIApplication sharedApplication];
bgTask = [app beginBackgroundTaskWithExpirationHandler:^{
[app endBackgroundTask:bgTask];
bgTask = UIBackgroundTaskInvalid;
}];
}
Ale po 10 minutach zadanie w tle zatrzymuje się. Następnie lokalne powiadomienie nie pojawia się użytkownikowi, mimo że jest uruchamiane (dziennik jest drukowany po wypaleniu)
Ja zmodyfikowałemapplicationDidEnterBackground
działają jak poniżej, aby ponownie uruchomić zadanie w tle na długi czas. Ale nie mogę.
- (void)applicationDidEnterBackground:(UIApplication *)application
{
expirationHandler = ^{
[app endBackgroundTask:self.bgTask];
self.bgTask = UIBackgroundTaskInvalid;
self.bgTask = [app beginBackgroundTaskWithExpirationHandler:expirationHandler];
}
self.bgTask = [app beginBackgroundTaskWithExpirationHandler:expirationHandler];
}
Teraz są pytania:
Czy jest jakiś sposób, aby wywołać lokalne powiadomienia i pojawić się użytkownikowi, gdy aplikacja jest w tle?
Jeśli zadanie w tle jest obowiązkowe, jak długo może trwać wyświetlanie lokalnego powiadomienia o pojawieniu się użytkownika po 10 minutach?
ja używamiPhone 3gs
, iPhone 4
iiPhone 5
.