点按本地通知iOS

时间:2014-10-16 07:32:05

标签: ios objective-c

首先我想知道,当我点击本地通知时会调用哪种特定方法。我想点击通知打开一个网址。下面是代码应用程序委托。 现在的问题是,即使我没有点击通知,网址也会自动打开。如果你知道的话请指导我。谢谢

 - (void)application:(UIApplication *)application didReceiveLocalNotification:      (UILocalNotification *)notifyAlarm
    {
        application.applicationIconBadgeNumber = 0;
        NSLog(@"Notification tapped :) ");
       [[UIApplication sharedApplication] openURL:[NSURL          URLWithString:@"http://www.google.com.pk"]]; }

3 个答案:

答案 0 :(得分:6)

- (void)application:(UIApplication *)application didReceiveLocalNotification:      (UILocalNotification *)notifyAlarm

每次通知触发时都会调用此方法。
要在点击通知时打开网址,您必须检查应用的状态。

- (void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification
{
    UIApplicationState appState = UIApplicationStateActive;
    if ([application respondsToSelector:@selector(applicationState)])
        appState = application.applicationState;

    if (appState == UIApplicationStateActive)
    {
//        Don't open Url.
    }
    else
    {
//        Open Url.
    }
}

答案 1 :(得分:2)

请查看Local and Remote Notification Programming Guide from Apple,“处理本地和远程通知”部分。

  

如果点击操作按钮(在运行iOS的设备上),系统将启动应用程序,应用程序将调用其委托的应用程序:didFinishLaunchingWithOptions:method(如果已实现);它传入通知有效负载(用于远程通知)或本地通知对象(用于本地通知)。

后来说

  

[...]获取applicationState属性的值并对其进行评估。如果值为UIApplicationStateInactive,则用户点击操作按钮;如果值为UIApplicationStateActive,则应用程序在收到通知时位于最前面。

答案 2 :(得分:0)

尝试检查application.applicationState。如果应用程序在前台处于活动状态,则不会打开URL。