如何在点击推送通知时打开iOS应用程序?

3

请问如何在通知中点击打开iOS应用程序?或者当我们滑动通知图标(在iPhone锁定的情况下)时?

有没有人能帮我解决这个问题?

4个回答

12

当通知到来时,操作系统会处理其行为。无论是否由第三方发送,如果经过APNS,它都会打开应用程序并进入applicationDidFinishLaunchingWithOptions:(NSDictionary *)launchOptions函数:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {

    if (launchOptions != nil) {
         // Launched from push notification
         NSDictionary *notification = [launchOptions objectForKey:UIApplicationLaunchOptionsRemoteNotificationKey];
    }
}
如果应用程序在通知到达时已经打开,操作系统会触发委托方法:
如果通知到来时应用已经处于打开状态,则操作系统将触发委托方法:
 - (void)application:(UIApplication*)application didReceiveRemoteNotification:(NSDictionary *)userInfo {   
     // Do something
}

5
不,只有当应用程序已经在运行时,才会调用该方法;否则,您将在 application:willFinishLaunchingWithOptions: 和 application:didFinishLaunchingWithOptions: 方法中接收推送负载。 - Filip Radelic
非常正确。很好的发现,我没有考虑就发布了 :) [launchOptions objectForKey:UIApplicationLaunchOptionsRemoteNotificationKey] 是一个字典,在从未运行状态的应用程序中启动时可以浏览。 - LJ Wilson
嗨,Filip,感谢澄清,无论应用程序是否打开,点击或滑动推送通知都会打开相关的应用程序。对吧?只是它根据应用程序的状态(打开/关闭/后台)调用不同的方法。 - TechnoGeezer
如果应用程序在通知到达时处于打开状态,则会调用我上面回答中的委托方法。如果应用程序在通知到达时未打开,则应用程序将被操作系统启动,并且在applicationDidFinishLaunchingWithOptions:(NSDictionary *)launchOptions内部,launchOptions字典将具有与通知相关联的信息。 - LJ Wilson

6

这意味着应用程序会自动打开。苹果为我们完成了这项工作。我们不需要编写任何代码来打开应用程序。


如何在点击推送通知时打开特定的视图控制器? - Rinku
@Rinku:当用户点击推送通知并打开应用程序时,将调用- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions方法,在那里您可以将您的ViewContrller设置为rootView或者从那里直接呈现它。 - Midhun MP

1
应用程序会自动打开,但是会回到你上一次停留的视图控制器。因此,为了打开你所需的视图控制器,只需实现application:didReceiveRemoteNotification:方法。更多解释请参见这里

1

点击本地通知后,应用程序会自动启动。


很好,但那是本地通知而不是推送通知。两者之间有很大的区别 :) - Richard J. Ross III
即使我正在将第三方推送通知集成到我的应用程序中,它是否会在任何操作上打开,例如在通知上点击或在手机锁定的情况下滑动图标? - TechnoGeezer

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接