使用 iOS 13 的新功能来报告 TestFlight 版本的崩溃,在某些应用程序上,我遇到了一个问题,该问题仅feedback.json
在没有实际崩溃报告的情况下报告。有什么可以启用的吗?
值得一提的是,crashalitics 已启用并且不报告任何崩溃。
更新:所以经过一些调查,我发现reports without a crash logs are system terminations
. 就我而言,当我从手机中提取设备日志时0xbadf000d
,其中一个含义是系统在后台终止了一个长进程。似乎它一直在那里,但是通过 iOS13 Testflight 反馈,它会在弹出窗口中变得可见。
顺便说一句,来自 Xcode“设备和模拟器”的日志不知何故与手机上的日志不同步。
外卖:面临手动模拟崩溃报告的需要,因此发现了非常有用的 stackoferlow 帖子:https ://stackoverflow.com/a/45207863/3032917
我正在开发应用程序,我需要将联系人导入NSMutableDictionary
,但有时人们不会填写所有联系人详细信息.所以只留下号码或公司名称.我是否需要浏览所有联系人详细信息以检查哪个字段将成为我的"显示名称".在Android中我知道有displayName
变量.但是如何在Swift或Objective C中呢?
我的代码:
BOOL success = [addressBook
enumerateContactsWithFetchRequest:request
error:&contactError
usingBlock:^(CNContact *contact, BOOL *stop){
NSString * contactId = contact.identifier;
NSString * firstName = contact.givenName;
NSString * lastName = contact.familyName;
}];
Run Code Online (Sandbox Code Playgroud) 在 iOS13 上请求“始终”权限期间,用户可以点击“允许一次”,这将调用具有状态的适当委托kCLAuthorizationStatusAuthorizedWhenInUse
,但再次请求“始终”会调用带有 的委托kCLAuthorizationStatusAuthorizedAlways
。为什么?当其他组合像您总是请求的那样只工作一次时,您会得到它,甚至再次调用也不会调用带有状态的委托。
要测试的示例代码:
@import CoreLocation;
@interface ViewController () <CLLocationManagerDelegate>
@property (strong, nonatomic) CLLocationManager *locationManager;
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
self.locationManager = [[CLLocationManager alloc] init];
self.locationManager.delegate = self;
}
- (IBAction)doauthloc:(id)sender {
[self.locationManager requestAlwaysAuthorization];
}
- (void)locationManager:(CLLocationManager *)manager didChangeAuthorizationStatus:(CLAuthorizationStatus)status {
switch(status) {
case kCLAuthorizationStatusNotDetermined:NSLog(@"AUTH STATUS:kCLAuthorizationStatusNotDetermined"); break;
case kCLAuthorizationStatusRestricted:NSLog(@"AUTH STATUS:kCLAuthorizationStatusRestricted"); break;
case kCLAuthorizationStatusDenied:NSLog(@"AUTH STATUS:kCLAuthorizationStatusDenied"); break;
case kCLAuthorizationStatusAuthorizedAlways:NSLog(@"AUTH STATUS:kCLAuthorizationStatusAuthorizedAlways"); break;
case kCLAuthorizationStatusAuthorizedWhenInUse:NSLog(@"AUTH STATUS:kCLAuthorizationStatusAuthorizedWhenInUse"); break;
};
}
@end
Run Code Online (Sandbox Code Playgroud)