- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我们的应用程序已发布小更新,此版本还通过 Apple 支持将其应用程序 ID 从唯一 ID 更改为我们的团队 ID。
According to Apple ,更改为使用团队 ID 应该只会重置钥匙串(keychain)访问权限,我们不使用钥匙串(keychain),因此它不会对我们的应用产生任何影响。
但自更新发布以来,我们的一些生产用户的应用程序数据遭到损坏。只有当他们使用通知中心或锁定屏幕中的操作按钮响应本地通知时,才会发生这种情况。它可能发生在所有受支持的 iOS 版本上。
遇到这种情况的用户有另一种症状,他们收到两个本地通知而不是一个,但应用程序只看到一个通知。此外,在使用 [[UIApplication sharedApplication] cancelAllLocalNotifications]
禁用通知和取消后,这些通知仍然不会消失。
这些重复的通知是在应用程序从 App Store 更新之前安排的,但更新后应用程序对某些用户失去了对它们的控制。这个问题描述的很详细in this question .
最大的线索可能在于从 Apple 收到的崩溃报告 -
Incident Identifier: ED0E9C.............74B38C
CrashReporter Key: ae05b............dbc46
Hardware Model: iPhone4,1
Process: MY_APP [444]
Path: /private/var/mobile/Containers/Bundle/Application/65324..................8616/MY_APP.app/MY_APP
Identifier: com.mycompany.myapp
Version: X.X
Code Type: ARM (Native)
Parent Process: launchd [1]
Date/Time: 2015-10-27 21:45:24.24 -0500
Launch Time: 2015-10-27 21:45:20.20 -0500
OS Version: iOS 9.1 (13B143)
Report Version: 104
Exception Type: EXC_CRASH (SIGABRT)
Exception Codes: 0x0000000000000000, 0x0000000000000000
Exception Note: EXC_CORPSE_NOTIFY
Triggered by Thread: 0
Last Exception Backtrace:
0 CoreFoundation 0x244b3676 __exceptionPreprocess + 122 (NSException.m:162)
1 libobjc.A.dylib 0x3582ee12 objc_exception_throw + 34 (objc-exception.mm:531)
2 CoreFoundation 0x244b354c +[NSException raise:format:arguments:] + 100 (NSException.m:131)
3 Foundation 0x25240bc4 -[NSAssertionHandler handleFailureInMethod:object:file:lineNumber:description:] + 88 (NSException.m:152)
4 UIKit 0x28840754 -[UIApplication _runWithMainScene:transitionContext:completion:] + 2928 (UIApplication.m:3299)
5 UIKit 0x28853a48 __84-[UIApplication _handleApplicationActivationWithScene:transitionContext:completion:]_block_invoke3218 + 32 (UIApplication.m:11920)
6 UIKit 0x2883d71e -[UIApplication workspaceDidEndTransaction:] + 130 (UIApplication.m:2648)
7 FrontBoardServices 0x2c52dca2 -[FBSSerialQueue _performNext] + 226 (FBSSerialQueue.m:157)
8 FrontBoardServices 0x2c52df94 -[FBSSerialQueue _performNextFromRunLoopSource] + 44 (FBSSerialQueue.m:204)
9 CoreFoundation 0x24476bfa __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ + 10 (CFRunLoop.c:1761)
10 CoreFoundation 0x244767e8 __CFRunLoopDoSources0 + 448 (CFRunLoop.c:1807)
11 CoreFoundation 0x24474b56 __CFRunLoopRun + 790 (CFRunLoop.c:2536)
12 CoreFoundation 0x243c8114 CFRunLoopRunSpecific + 516 (CFRunLoop.c:2814)
13 CoreFoundation 0x243c7f00 CFRunLoopRunInMode + 104 (CFRunLoop.c:2844)
14 UIKit 0x28610208 -[UIApplication _run] + 520 (UIApplication.m:2489)
15 UIKit 0x2860af10 UIApplicationMain + 140 (UIApplication.m:3665)
16 MY_APP 0xc4972 main + 22 (main.m:14)
17 libdyld.dylib 0x35f9d86e tlv_get_addr + 42 (threadLocalHelpers.s:310)
它的堆栈跟踪与 this question 中的完全相同,当用户响应推送通知时会发生这种情况。应用加载期间的崩溃可能是应用数据损坏的原因。
正如在堆栈跟踪中看到的,这次崩溃不是由我们的代码引起的,我们没有更改代码中的任何内容,它在 App ID 更改之前一直运行良好,并且发生在我们约 2% 的用户身上。
这是处理通知操作按钮的代码 -
- (void)application:(UIApplication *)application handleActionWithIdentifier:(NSString *)identifier forLocalNotification:(UILocalNotification *)notification completionHandler:(void (^)())completionHandler {
@try {
if (notification) {
NSDate *alarmTime = notification.userInfo ? [notification.userInfo objectForKey:@"time"] : nil;
[logic saveAlarmTime:alarmTime takenAt:[NSDate date]];
}
}
@catch (NSException *exception) {
NSLog(@"Exception: %@", [exception description]);
}
@finally {
completionHandler();
}
}
导致崩溃的原因是什么?
(我知道它在 -[UIApplication _runWithMainScene:transitionContext:completion:] + 2928 (UIApplication.m:3299)
中被抛出,问题是里面有什么导致它崩溃。)
最佳答案
此异常可能与最初通过操作按钮响应通知无关。此堆栈跟踪指示加载应用程序时出现问题,但有多种可能的原因,任何在加载时使应用程序崩溃的情况都会导致此问题。
例如,当应用程序加载并且其窗口没有分配 Root View Controller 时,可能会发生这种情况。如果它是使用 addSubview
而不是 setRootViewController
添加的,也可能会发生,如 here 所示.
您必须向遇到此崩溃的用户验证他们在做什么,如果他们确实只响应了本地通知操作按钮,或者他们在打开应用程序时遇到了崩溃。
关于iOS UILocalNotification 是操作按钮崩溃并损坏应用程序数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33384680/
所以我有这个 javascript 片段,它有两个按钮可以进入全屏,一个按钮可以退出全屏。我想做到这一点,如果我不在全屏模式下,按钮会显示转到全屏模式,而当我处于全屏模式时,按钮会显示退出全屏模式..
我在自定义控件中添加了一个新属性作为可扩展属性,例如属性网格中的字体属性。在 Windows 窗体应用程序项目中使用我的自定义控件后,我在属性网格中看到一个省略号 (…) 按钮,如字体属性的“…”按钮
我在自定义控件中添加了一个新属性作为可扩展属性,例如属性网格中的字体属性。在 Windows 窗体应用程序项目中使用我的自定义控件后,我在属性网格中看到一个省略号 (…) 按钮,如字体属性的“…”按钮
我尝试将 Twitter 上的“Tweet Me”按钮 ( http://twitter.com/goodies/tweetbutton ) 添加到我的网站。然而,每当按下按钮时,我都会收到此 Jav
我试图在我的文本区域中获取一个按钮值,如果我使用 则工作正常但如果我使用那么它就不起作用了。你能找出问题所在吗? HTML 1 2 3 4 JavaScript $(document).read
我的 C# Winform 面板中有一堆文本框。每行文本框的命名如下: tb1 tbNickName1 comboBox1 tb2 tbNickName2 comboBox2 tb3 tbNickNa
我有一个表单,其中过滤器下方有按钮(应用过滤器和清除过滤器),我试图在单击“应用”按钮时显示“清除”,并在单击“清除”按钮时隐藏“清除”按钮。 下面的代码(如果我的表有的话):
excel 按钮正在工作,但是当我添加 pdf 按钮时,它添加仅显示 pdf 按钮 excel 按钮在 pdf 按钮添加后隐藏 $(document).ready(function() { $
我想创建一个 div 作为标题并分成 3 列,并按以下顺序在其中放置 2 个按钮和一个标题:Button1(左位) Title(居中) Button2(右位) 这是我为这个 div 编写的代码:
仅当选中所有框时才应禁用“允许”按钮。我该怎么做?我已经完成了 HTML 部分,如下所示。如何执行其中的逻辑部分?即使未选中一个复选框,也应禁用“允许”按钮
很难说出这里问的是什么。这个问题是含糊的、模糊的、不完整的、过于宽泛的或修辞性的,无法以目前的形式得到合理的回答。如需帮助澄清此问题以便重新打开它,visit the help center 。 已关
如您所知,您可以使用 2 种方法在 HTML5 中呈现按钮: 使用 void 元素 或 如果您需要内容,请使用 元素(不是空元素)。 在JSF2中,有2种方式生成按钮;与UICommand或 UIOu
我尝试根据表单元素的更改禁用/启用保存按钮。但是,当通过弹出按钮选择更改隐藏输入字段值时,保存按钮不受影响。 下面是我的代码。我正在尝试序列化旧的表单值并与更改后的表单值进行比较。但我猜隐藏的字段值无
我有用于在消息(电子邮件、短信)上输入内容的 EditText。我希望在单击 ActionDone 按钮时立即发布消息。我为此使用以下代码: message.setOnEditorActionList
我的 Android 应用程序中有一堆 EditText,每个都将 InputMethod 设置为 numberSigned。我的目标设备没有硬件键盘,而是使用软件键盘输入数字。 Android 将输
我无法以编程方式隐藏弧形菜单中的 fab 按钮。我正在使用https://github.com/saurabharora90/MaterialArcMenu在我的代码中。如何在Java中以编程方式隐藏
我已经看到这在其他类型的对话框窗口中是可能的,例如“showConfirmDialog”,其中可以指定按钮的数量及其名称;但是使用“showInputDialog”时是否可以实现相同的功能?我似乎无法
相同的按钮用于激活和停用。第一次,当代码运行按钮单击并成功“停用”时。但第二次,代码无法找到该元素。第一个案例按钮位于第二个“a”标签中,然后停用第一个“a”标签中的按钮。 案例1: Edit
是否可以将按钮的 onclick 操作设置为 JavaScript 变量?这个想法是我们用 JavaScript 控制一个表。每当点击该表的一行时,我们就会更新一个 JavaScript 变量。该 v
我想创建一个按钮,它包含左侧的文本和右侧的复选框(或任何其他组件)。我怎样才能做到这一点? 我发现我可以制作自己的 View extends Button,但是如果可以的话我应该如何实现 onDraw
我是一名优秀的程序员,十分优秀!