应用程序 didreceiveRemoteNotification 并跳转到特定视图

2023-12-01

我一直在尽一切努力来解决这个问题。当应用程序关闭时,我会收到一条通知,其中包含 2 个自定义项目(一个类型和一个 ID)。类型应该告诉我要加载哪个视图,而 id 应该告诉应用程序从数据库获取哪一行。我正在经历地狱般的尝试来解决这个问题。

我需要点击通知并让它带我到相关记录。到目前为止,我已经使用两种不同的方法几乎取得了成功,我将在下面概述这些方法。

我还应该指出,我知道有效负载从 APNS 可以正常工作,因为我已经将其调试至死亡:)

我尝试的第一件事如下:

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

    NSString *itemType = [[userInfo objectForKey:@"T"] description];
    NSString *itemId = [[userInfo objectForKey:@"ID"] description];

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

    // type 1 = call, type 2 = contact
    if ([itemType isEqual: @"1"]) {
        Leads_CallsDetailViewController *callView = [[Leads_CallsDetailViewController alloc] init];
        [callView displayItem:itemId];
        [self.window addSubview:callView.view];
        [self.window makeKeyAndVisible];
    } else if([itemType isEqual: @"2"]) {
        Leads_ContactsDetailViewController *contactView = [[Leads_ContactsDetailViewController alloc] init];
        [contactView displayItem:itemId];
        [self.window addSubview:contactView.view];
        [self.window makeKeyAndVisible];
    }
}

有了这个,我在详细信息视图上有一个名为 displayItem 的方法,我将使用它从 api 获取数据,然后显示它。这做了一些事情,但看起来视图从未真正加载。我的页面上有一个滚动视图和各种按钮,但从 addSubview 加载的只是背景图像。完全加载视图时没有发生任何真正的事情。我不知道该如何处理。

我尝试的第二件事是直接进入视图,如下所示:

NSString *storyboardId = @"Leads_Calls_SB";
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil];
UIViewController *initViewController = [storyboard instantiateViewControllerWithIdentifier:storyboardId];
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
self.window.rootViewController = initViewController;
[self.window makeKeyAndVisible];

这似乎加载了视图的功能和美观,但有两个主要警告。 1.我不知道如何向它传递数据,2.当我尝试弹出时它不喜欢它,当我尝试从那里继续推送时它也很生气,几乎就像没有导航一样视图的控制器,即使整个应用程序都嵌入在导航控制器中。

非常感谢你的帮助。如果有人能帮我解决这个问题,我将感激不尽。


通常对于这个要求我会这样做..

  1. 使用 NSNotificationCenter 并从 didReceiveRemoteNotification 发布通知。

    [[NSNotificationCenter defaultCenter] postNotificationName:@"notificationReceived"     object:self userInfo:userInfo];
    
  2. 从 VC 订阅它,您可以在其中打开详细信息视图以显示消息。

    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(notificationReceived:) name:@"notificationReceived" object:nil];
    
  3. 如果您自己实例化 VC 并且不使用 segue。你可以这样做..

    UIStoryboard* storyBoard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil];
    detailVC = [storyBoard instantiateViewControllerWithIdentifier:@"detailVC"];
    detailVC.delegate = self;
    
    detailVC.userInfo = @"YOUR DATA";
    [self presentViewController:detailVC animated:YES completion:nil];
    
  4. 要返回,您可以在您的详细 VC 中执行此操作。

    [self dismissViewControllerAnimated:YES completion:nil];
    
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

应用程序 didreceiveRemoteNotification 并跳转到特定视图 的相关文章

  • XCode iPhone 项目中目标所有配置的通用预处理器宏

    我的应用程序的每个目标通常有四种配置 调试 发布 分发 临时 有没有办法为所有 4 个添加一个通用宏 同时不破坏我到目前为止设置的宏 您在编辑器中看到 多个值 提前致谢 奥比旺 在前缀头文件中定义宏 将包含在所有源文件中
  • 使用 Core Audio 忽略 __cxa_throw 是否安全?

    一个相似的question https stackoverflow com questions 12861748 how do i know when safe to ignore cxa throw on an all exception
  • 如何使用最新的 FBSDK 在 iOS 应用程序中集成 Facebook,而不重定向 Safari 浏览器

    您好 我正在搜索避免新的 facebooksdk 重定向到 safari 的答案 如何在应用程序内打开 facebook 登录视图 如果它重定向到 safari 可能会在应用程序商店中拒绝 帮助我 提前致谢 昨天我使用以下方式提交我的应用程
  • 在 iOS8.3 上显示警报视图时不必要地触发 iOS 键盘通知

    我们正在观察 iOS 8 3 上键盘将显示和隐藏通知的异常行为 视图控制器 监听键盘通知 有一个文本字段 单击并点击提交按钮后 该方法首先从文本字段中退出第一响应者 并显示一条警报以通知警告 一切正常 它会关闭键盘并按预期显示警报 也调用
  • 从 NSArray 为 UITableView 创建索引

    我读过创建索引 uitableview 旁边的 a z 的最佳方法是设置一个 nsdictionaries 数组 其中每个字典对应一个部分 并且 rowValue 键包含一个行数组 NSDictionary headerTitle gt A
  • Xcode - 使用 SSH 身份验证添加存储库时出现身份验证失败错误

    我正在尝试通过 Xcode gt 设置 gt 帐户添加存储库 但我被困在正确的地址上 我们的存储库地址非常简单 my domain com port project name 通过 SSH 密钥进行身份验证 有人可以帮助我了解这里发生了什么
  • NSRunningApplication - 终止

    我将如何使用NSRunningApplication 我有与启动应用程序相反的东西 NSWorkspace sharedWorkspace launchApplication appName 但我想关闭一个 当我调试代码时出现错误NSRun
  • 迭代 NSDictionary 时保持顺序

    我有一个 NSDictionary 它正在迭代并将数据保存到核心数据 如下所示 NSDictionary details valueDict objectForKey shipment master for NSDictionary res
  • 如何在 Xcode 4 中安装 Cocos2d PROJECT 模板?

    我可能已经用 20 种不同的语法搜索了这个问题 但找不到答案 请帮忙 如何在 xcode 4 中安装 Cocos2d 项目模板 我尝试了不同的方法 但是当我在 Xcode 4 中构建新项目时它们仍然没有出现 帮助 下载 cocos2d ip
  • 如何在全屏视图前面显示 NSPanel?

    我的应用程序以全屏方式运行 我需要类似 iOS 的 UIPopoverController 之类的东西 第一个想法是使用 NSPanel 但我无法让它显示在全屏视图前 我需要一个类似 UIPopoverController 的 Cocoa
  • Objective-C 中可以创建私有财产吗?

    Objective C 中可以创建私有财产吗 我确实知道一种私有财产功能可以通过另一种方式实现 但我对特定问题感兴趣 谢谢 是的 可以 但是代码看起来有点奇怪 如果你打电话它只会给你一些警告 你必须自己检查警告 在您的实现文件 m 中 in
  • 影响 UINavigationBar 的后退按钮方法 (iOS)

    我有一个推送到详细视图控制器的表视图 从详细视图控制器中 当我按下 后退 按钮时 我希望更改一个整数值 如何以编程方式编辑导航栏后退按钮的操作 后退按钮会自动放置在我的应用程序中 因为我使用的是表视图 所以我实际上没有创建按钮 所以我不知道
  • 如何强制重装iOS模拟器?

    我想下载模拟器组件 Xcode 6 2 但在下载过程中我的互联网连接丢失了 Xcode 仍然显示我已经安装了 7 1 模拟器 你知道如何强制重装iOS模拟器吗 我已完成以下步骤 从 Library Caches com apple dt X
  • 模态转换风格就像邮件应用程序中一样

    我试图实现模态呈现效果 其中呈现的视图仅部分覆盖父视图 如下图所示 我知道我可以通过使用实现自定义转换来实现这一点UIPresentationController 我不想重新发明轮子 所以在继续开发之前我想问一下 API 中是否有对这种转换
  • NSExceptionDomains xcode 8 不工作

    我正在使用 UIWebView 来显示电子邮件订阅注册页面 它不是 https 页面 所以我显然需要破例 我不想将其设置为 NSAllowsArbitraryLoads 因为它只是整个应用程序中的一页 应用程序可能会被拒绝 所以我在 inf
  • 使用 Signalr 拥有类似 facebook 的通知系统

    我想在 ASP NET MVC 3 中实现一个类似 facebook 的通知系统 通知被发送到特定用户 以通知他对其某个项目进行操作 signalr适合这样的要求吗 我如何使用 SignalR 向特定用户 该用户的所有打开的会话 发送通知
  • 调用 popToRootViewControllerAnimated 时未调用 viewWillDisappear

    我从事遗留应用程序的工作 并发现我的view Will Did Disappear方法并不总是被正确触发 情况是 我有一个 自定义 UIViewController在 AppDelegate 中设置为 rootViewController
  • 如何让 CAAnimation 在每个动画周期调用一个块?

    我可以以某种方式在 CAAnimation 的每个 tick 上执行一个块吗 它可能像下面的代码一样工作 如果有办法用选择器来做到这一点 那也是可行的 NSString keyPath position x CGFloat endValue
  • 如何将 GoogleAnalytics 标头导入到库框架中?

    我为我的项目创建一个库框架 我希望该框架能够依赖 Google Analytics 库 由于与应用程序目标不同 框架没有桥接标头 因此如何将标头导入到框架中 并且在框架的公共头文件中导入 Google Analytics 标头会产生其他意外
  • 在 Xcode 9 上切换分支

    我无法找到使用 Xcode 9 切换分支的菜单项 工作副本菜单似乎已经消失 有任何想法吗 Xcode 9 Xcode 8 Press 2 to open the new Source Control Navigator 右键单击master

随机推荐

  • 按类名划分的 JavaFX 样式

    也许是一个基本问题 但是是否可以在 JavaFX 中通过类名设置表元素的样式 例如这样 MyClassname table view column header label fx text fill F00 我希望它可以在 1 个样式表中设
  • 可以从Javascript文件访问MVC ViewBag对象吗?

    是否可以从 MVC 应用程序中的 javascript 文件执行以下操作 function alert ViewBag someValue 目前它抛出错误 引用未定义的 XML 名称 ViewBag 我不认为目前有任何方法可以做到这一点 R
  • Git Clone 在 Azure 命令行任务中生成错误

    在我的 Azure DevOps CD 管道中 我添加了一个克隆 Git 存储库的命令行任务 克隆已成功完成 但日志中出现错误 奇怪的行为是克隆与 Azure 托管代理完美配合 例如vs2017 win2016 or Windows 201
  • 如何从 Azure AD B2C 身份验证获取电子邮件地址?

    我正在尝试让 Azure AD B2C 获取用户电子邮件地址 但我在提供该地址的令牌中看不到任何内容 即使我的登录 注册策略对用户电子邮件地址进行了 声明 我如何获得电子邮件地址 更一般地说 除了示例之外 是否有任何文档可以解释此服务的工作
  • 使用 prxmatch 匹配以某个字符结尾的字符串

    匹配以某个字符结尾的字符串 我正在尝试创建一个新变量 该变量指示字符串是否以某个字符结尾 下面是我尝试过的 但是当运行此代码时 变量ending in e全为零 我希望像 Alice 和 Jane 这样的名字会与下面的代码匹配 但它们不是
  • 结构体中零长度数组的用途是什么? [复制]

    这个问题在这里已经有答案了 当我查看Linux内核代码时 发现了以下代码 struct thread info struct task struct task struct exec domain exec domain unsigned
  • 如果 isNaN,如何将变量的内容更改为零 [重复]

    这个问题在这里已经有答案了 可能的重复 当我按 Enter 时 我得到 isNaN 但该值是一个数字 我上周日交了作业 它被发回给我进行更正 因为 isNaN 值返回到 Total 文本框 我认为这就是编程要做的事情 相反 根据她的说法 i
  • 在 Seaborn 箱线图中获取值

    我想通过 Seaborn 中生成的箱线图获取具体值 即媒体 四分位数 例如 在下面的箱线图中 来源 link 有没有办法获取媒体和四分位数而不是手动估计 import numpy as np import seaborn as sns sn
  • 打印文件中的每 n 行

    我正在尝试打印每个n文件中的第 3 行 但是n不是常量而是变量 例如 我想替换sed n 1 5p 与类似的东西sed n 1 i p 这可能吗 awk还可以用更优雅的方式做到这一点 awk v n YOUR NUM NR n 1 file
  • Kubelet 使用什么来确定节点的临时存储容量?

    我在虚拟机上运行 Kubernetes 集群 安装座的简要概述如下 df h Filesystem Size Used Avail Use Mounted on dev sda1 20G 4 5G 15G 24 dev mapper vg0
  • pandas read_csv 最后一列包含逗号

    所以我有一个 csv 数据集 根据我的书 该数据集格式良好 并且我正在尝试获取pandas包以正确加载它 标题由 5 个列名组成 但最后一列由包含未转义逗号的 JSON 对象组成 例如 A B C D E 1 2 3 4 K1 V1 K2
  • 是否有更简单(且仍然高性能)的方法来通过最近邻重采样来升级画布渲染?

    我对这个看似简单的以最近邻格式升级画布渲染的任务感到有点困惑 我在这里问 如何在 JS 中正确编写这个着色器函数 目标是像这样转换 3D 渲染输出 像这样的像素艺术 但在这个问题中我问的是如何实施我选择的解决方案 本质上使用着色器来处理放大
  • 如何使用“getOwnPropertyNames”迭代地图的内容

    我在代码部分下面发布了地图 我向地图添加了一些值 如图所示 但是当我尝试使用显示地图的内容时 getOwnPropertyNames 如代码所示 循环中的日志语句不显示任何内容 请让我知道如何正确使用 getOwnPropertyNames
  • 谷歌应用脚​​本文本框值未传递给 e.parameter.TextBoxName

    在下面的代码中 我定义了一个带有名称和 ID 的文本框 按钮处理程序工作正常 但我无法获取在文本框中输入的值 msgBox 出现了 但是e parameter matchValue显示为undefined 在应用程序的其他部分 我有相同的逻
  • 在delphi中关闭运行时的delphi异常

    有什么方法可以关闭 Delphi 应用程序运行时显示的异常消息吗 我认为必须有一个指令来关闭异常消息 但我不记得了 大多数异常消息可以通过处理来抑制TApplication OnException事件 仅当没有为该事件分配处理程序时 应用程
  • 将外部 JSON 加载到 ChartJs 中

    当谈到使用 JavaScript 库绘制图表时 我是一个新手 我刚刚开始尝试 Chartjs 但我无法使用 getJson 或其他任何东西来加载我的 json 对象并替换标签和数据 我以前使用过 HighCharts 与此相比 它相当简单
  • echo shell 打开的目录:startup

    进入时start shell startup进入命令提示符 它会在启动文件夹中打开一个新窗口 如何打印该文件夹的路径但实际上不在资源管理器中打开该文件夹 您可以使用 NET s Environment SpecialFolder 此 Pow
  • 在 C++ 中的派生类构造函数中访问基模板类的变量

    让我们看一下这个简单的代码示例 其中包括一个基类和一个从 Base 派生的类 该类在其构造函数中需要基类成员的地址 include
  • 与 Polymer.Templatizer 的两种方式数据绑定

    我正在尝试使用模板化器在 Polymer 中的主机元素和模板之间进行两种方式的数据绑定 例如 如果我试图保持两个输入框同步
  • 应用程序 didreceiveRemoteNotification 并跳转到特定视图

    我一直在尽一切努力来解决这个问题 当应用程序关闭时 我会收到一条通知 其中包含 2 个自定义项目 一个类型和一个 ID 类型应该告诉我要加载哪个视图 而 id 应该告诉应用程序从数据库获取哪一行 我正在经历地狱般的尝试来解决这个问题 我需要