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

Do not open the app when a local notification is clicked in iOS

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

苹果肯定会拒绝这样的应用程序。

但是如果你想做这样的事情,下面是你可以做的,但这会打开应用程序。

- (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);
}

简而言之,从推送打开应用程序时,终止应用程序。

我知道这个 post 很旧,但我在尝试自己弄清楚如何执行此操作时发现了这个。我想我会更新以防其他人 运行 加入其中。

我正在研究 Project 21 Hacking With Swift,当时其中一项挑战要求您从通知中设置 "Remind Me Later" 选项。很明显,这种情况下打开app是没有用的,所以我也想办法了。

这是我发现的方法,其实很简单。您只需在注册类别时删除一段代码。

例如:

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 中的那样)并解决您的问题!

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

希望对您有所帮助!