在iOS中单击本地通知时,请勿打开应用程序

时间:2015-01-19 07:46:50

标签: ios objective-c uilocalnotification

当我点击来自通知中心的本地通知时,我想阻止它打开我的应用程序,即当点击通知时,除了清除它之外不会发生任何事情。知道怎么做吗?

2 个答案:

答案 0 :(得分:1)

肯定Apple会拒绝此类应用。

但是如果你想做这样的事情,你可以做以下事情,但这会打开app。

- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo {中,有以下内容。

- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo {
    //home button press programmatically
    UIApplication *app = [UIApplication sharedApplication];
    [app performSelector:@selector(suspend)];

    //exit app when app is in background
    exit(0);
}

简而言之,在从推送中打开应用时,请终止应用。

答案 1 :(得分:0)

我知道这篇文章很老,但是我在试图弄清楚自己如何做的时候发现了这篇文章。我想我会更新,以防其他人遇到它。

当挑战之一要求您从通知中设置“稍后提醒我”选项时,我正在研究Project 21 Hacking with Swift。显然,在这种情况下打开应用程序是没有用的,因此我也试图弄清楚。

这是我发现的方法实际上很简单。注册类别时,只需删除一段代码即可。

例如:

func registerCateories() {
    let center = UNUserNotificationCenter.current()
    center.delegate = self  //  Any messages get sent back to us

    let show = UNNotificationAction(identifier: "show", title: "Tell me more", options: .foreground)
    let remindMeLater = UNNotificationAction(identifier: "remindMeLater", title: "Remind me later...")
    let category = UNNotificationCategory(identifier: "alarm", actions: [show, remindMeLater], intentIdentifiers: [], options: [])
    center.setNotificationCategories([category])
}

您可以从本地通知中选择的两个选项是showremindMeLater。请注意,showoptions: .forground。这就是迫使您的应用在单击时打开的原因。删除它(例如在remindMeLater中),就可以解决您的问题!

稍后在代码中,您可以基于response.actionIdentifier函数中的userNotificationCenter调用其他函数,以使水龙头实际执行某些操作。

希望这会有所帮助!