簡體   English   中英

當App處於后台模式時,UILocalNotification可以觸發自定義方法嗎?

[英]Can UILocalNotification fire a custom method when App is in background mode?

好吧標題是自我解釋。 我想創建一個App,可以在App處於后台模式時管理編程的本地通知。 通知工作順利但我想在觸發警報時觸發自定義方法。

可能嗎? 謝謝。

是的,可以做到。 你可以這樣做:

- (void)applicationDidEnterBackground:(UIApplication *)application {
    [NSTimer scheduledTimerWithTimeInterval:17.0 target:self selector:@selector(makeNotificationRequest:) userInfo:nil repeats:YES];
}

-(void)makeNotificationRequest:(NSTimer *)timer
{
    CLLocation *location = [[AppHelper appDelegate] mLatestLocation];
    NSMutableDictionary *paramDic = [[NSMutableDictionary alloc] init];

#ifdef _DEBUG
    [paramDic setValue:[NSString stringWithFormat:@"77.586"] forKey:@"Lat"];
    [paramDic setValue:[NSString stringWithFormat:@"12.994"] forKey:@"long"];
#else
    [paramDic setValue:[NSString stringWithFormat:@"%f",location.coordinate.latitude] forKey:@"Lat"];
    [paramDic setValue:[NSString stringWithFormat:@"%f",location.coordinate.longitude] forKey:@"long"];
#endif

    WNetwork *mNetwork = [[WNetwork alloc] init];
    [mNetwork makeRequsetWithURL:URL_Showbeeps type:JBJsonParser paramDictionary:paramDic delegate:self];
    [mNetwork autorelease];
    NSLog(@"URL HIT%@",paramDic);
    [paramDic autorelease];
}

要根據警報自定義您的操作,您可以使用以下命令:

- (void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification {
    UIApplicationState state = [application applicationState];
    if (state == UIApplicationStateActive) {
        ;
    }
}

當應用程序在后台運行時,沒有定義自定義方法。一旦通知被觸發,我們可以;也可以更改警報消息。 但是,當我們顯示警報消息然后通過單擊警報的“是”按鈕時,您會看到一個名為app的方法正在AppDelegate.m文件中的后台運行

如果應用程序位於前台,那么您需要- (void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification UIApplicationDelegate - (void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification方法,但是文檔建議當應用程序在此時不會調用此方法背景。

您可以通過調用UIApplication實例上的scheduledLocalNotifications來獲取本地通知列表 - 然后您可以輪詢這些通知以查看它們的時間並安排在后台模式下調用的功能。 這不一定與本地通知激活時100%匹配,但我認為它與App Store指南一樣接近。

通過調用presentLocalNotificationNow:方法,您還可以在后台模式下顯示自己的本地通知:

https://developer.apple.com/library/IOS/#documentation/UIKit/Reference/UIApplication_Class/Reference/Reference.html#//apple_ref/occ/instm/UIApplication/presentLocalNotificationNow

因此,您可以通過僅顯示自己的通知而不是為操作系統安排它們來解決這個問題。

如果您嘗試從其他應用程序訪問本地通知,那么我不認為這是允許的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM