跳转到主要内容
PRODUCT DOCUMENTS

快速找到所需文档,高效完成接入与排障

浏览产品文档与友盟 Skill,展开目录并阅读正文。

iOS端点击推送如何跳转到指定的页面?

在 iOS 系统中,点击推送通知进入 App 时,会根据 App 的当前状态(是否已启动)调用不同的回调方法。以下是具体实现方式:


一、App 未启动状态(冷启动)

当 App 处于未启动状态时,用户点击通知栏的通知会触发以下方法:

objective-c

- (BOOL)application:(UIApplication *)application did系统结束工具名LaunchingWithOptions:(NSDictionary *)launchOptions

在该方法中,可通过以下方式获取通知内容:

objective-c

NSDictionary *userInfo = [launchOptions objectForKey:UIApplicationLaunchOptionsRemoteNotificationKey];

如果 userInfo 为 nil,说明用户是直接点击 App 图标进入应用;若不为 nil,则表示用户是通过点击通知栏进入应用,并可通过 userInfo 获取推送内容。


二、App 已启动状态(热启动)

  1. iOS 10 及以下系统点击通知栏会触发以下回调方法:

    objective-c

    - (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo
    

    其中 userInfo 即为推送的消息内容。

  2. iOS 10 及以上系统需使用 UNUserNotificationCenter 的回调方法:

    objective-c

    - (void)userNotificationCenter:(UNUserNotificationCenter *)center 
      didReceiveNotificationResponse:(UNNotificationResponse *)response 
               withCompletionHandler:(void (^)())completionHandler
    

    获取通知内容的方式如下:

    objective-c

    NSDictionary *userInfo = response.notification.request.content.userInfo;
    

    该 userInfo 与冷启动时获取的内容一致。


三、实现页面跳转逻辑

  1. 使用 presentViewController 方式跳转

    在 AppDelegate 中获取当前根视图控制器,直接调用 presentViewController 方法即可实现页面跳转。

  2. 使用 pushViewController 方式跳转

    若跳转方式为 pushViewController,则要求根视图控制器必须包含 UINavigationController,否则跳转将失败。

    建议通过 userInfo 发送通知,在目标页面的 viewWillAppear: 方法中监听并执行 pushViewController 跳转。


四、总结

通过获取 userInfo 中的通知内容,并结合 App 的运行状态及跳转方式,即可实现点击推送跳转至指定页面的功能。在调试过程中建议打印 userInfo 内容,以便快速排查问题。