当前位置: 首页 > 面试题库 >

如何发出推送通知打开某个视图控制器?

高修伟
2023-03-14
问题内容

我查看了SO,但是当您收到推送通知时,我找不到任何讨论的问题,然后如何打开特定的视图控制器。例如,如果您正在创建类似WhatsApp的应用程序,并且收到两个不同的推送通知,即来自两个不同用户的消息,您将如何将其从应用程序委托定向到相应的viewController?

据我在userinfo字典中知道appDelegate给您的,您可以给一个特定的viewController一个ID,但是我不知道如何向一个特定的view
controller致敬,这样您就可以再次指向该viewController 。请在答案中包含一个代码段

*可以接受Swift或Objective-C的答案*


问题答案:

您可以使用应用程序委托中的此代码检测是否从通知中打开了应用程序。当应用程序处于活动状态UIApplicationStateInactive之前,您需要设置初始视图控制器。您可以在那里执行任何逻辑,以决定应打开哪个视图控制器以及应在该视图控制器中显示哪些内容。

-(void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler{

    if(application.applicationState == UIApplicationStateActive) {

        //app is currently active, can update badges count here

    } else if(application.applicationState == UIApplicationStateBackground){

        //app is in background, if content-available key of your notification is set to 1, poll to your backend to retrieve data and update your interface here

    } else if(application.applicationState == UIApplicationStateInactive){

        //app is transitioning from background to foreground (user taps notification), do what you need when user taps here

        self.window = [[UIWindow alloc] initWithFrame:UIScreen.mainScreen.bounds];

        UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil];

        UIViewController *viewController = // determine the initial view controller here and instantiate it with [storyboard instantiateViewControllerWithIdentifier:<storyboard id>];

        self.window.rootViewController = viewController;
        [self.window makeKeyAndVisible];

    }

}


 类似资料:
  • 我为android https://github.com/Firebase/quickstart-android/tree/master/messaging和ios https://github.com/Firebase/quickstart-ios/tree/master/messaging配置并安装了示例Firebase快速启动应用程序。

  • 我想通过向Android手机endpoint发送推送通知。 已配置并已准备好发送通知。在使用我发送的 JSON 的 SNS 控制台中 { “GCM”: “{ ”通知“: { ”标题“: ”标题“, ”正文“: ”正文“} 但我只收到空notification.No正文,没有标题(只有应用程序图标)。

  • 问题内容: 我想使用XMPP,以便我的应用程序将更新发送到Android手机(1.5及更高版本)。我非常想使用XMPP将推送通知发送到电话。 我将如何实现这一目标。目前,我的Web应用程序正在使用许多servlet在apache tomact上运行,因此android手机可以访问信息,但是我发现很难理解如何实现XMPP,以便可以将信息从服务器推送到客户端( android手机)。 我已经通过Goo

  • 本文向大家介绍iOS10推送通知开发教程,包括了iOS10推送通知开发教程的使用技巧和注意事项,需要的朋友参考一下 虽然通知经常被过度使用,但是通知确实是一种获得用户关注和通知他们需要更新或行动的有效方式。iOS 10有了新的通知,如新消息、商业信息和时间表的变化。在本教程中,我将向你展示如何使用通知在你的iOS应用程序,并且显示iOS 10引入了新特性。开发iOS 10推送通知你需要最新版本的X

  • 如何通过Azure从我的UWP-App向不同设备上的应用程序的其他实例发送推送通知? 以下是注册设备以接收推送的说明。(这是可行的)第二部分是关于如何在控制台应用程序上发送推送(这也是可行的)https://azure.microsoft.com/en-us/documentation/articles/notification-hubs-windows-store-dotnet-get-star

  • 我是谷歌Chrome推送通知的新手,我刚刚在stackoverflow上阅读了一些问题和答案,我已经用这个简单的推送通知JavaScript结束了。 它只是简单的通知,但我需要打开一个新的窗口与其他网页后点击通知。 我知道这是可能的,但我找不到使用“ServiceWorker”语法的示例。 请帮帮忙。多谢了。