对于ios还是有很多陌生,以致项目上了一版本之后才发现,版本适配问题的严重性,总结下这段时间遇到的两个问题。
一:HTMLPrase解析乱码的问题
使用HTMLPrase主要用于解决解析后台懒得解析的html标签,之前一直使用的很顺畅,今天发现9.x系统竟然出现了乱码。最终查到是HTMLPrase出了问题,而且8.x正常显示。可想而之,肯定是编码除了问题。以下是解决方案:
-(id)initWithString:(NSString*)string error:(NSError**)error
{
if (self = [super init])
{
_doc = NULL;
if ([string length] > 0)
{
CFStringEncoding cfenc = CFStringConvertNSStringEncodingToEncoding(NSUTF8StringEncoding);
CFStringRef cfencstr = CFStringConvertEncodingToIANACharSetName(cfenc);
const char *enc = CFStringGetCStringPtr(cfencstr, 0);
//在这里加上下面两句!!
char buffer[255];
if (enc == NULL) {
if (CFStringGetCString(cfencstr, buffer, 255, kCFStringEncodingUTF8)) enc = buffer;
}
int optionsHtml = HTML_PARSE_RECOVER;
optionsHtml = optionsHtml | HTML_PARSE_NOERROR; //Uncomment this to see HTML errors
optionsHtml = optionsHtml | HTML_PARSE_NOWARNING;
_doc = htmlReadDoc ((xmlChar*)[string UTF8String], NULL, enc, optionsHtml);
}
else
{
if (error) {
*error = [NSError errorWithDomain:@"HTMLParserdomain" code:1 userInfo:nil];
}
}
}
return self;
}
二:获取推送通知设置
IOS7和IOS8的判断方式不同,直接上代码把:
- (BOOL)isAllowedNotification {
//iOS8 check if user allow notification
if ([self isSystemVersioniOS8]) {// system is iOS8
UIUserNotificationSettings *setting = [[UIApplication sharedApplication] currentUserNotificationSettings];
if (UIUserNotificationTypeNone != setting.types) {
return YES;
}
} else {//iOS7
UIRemoteNotificationType type = [[UIApplication sharedApplication] enabledRemoteNotificationTypes];
if(UIRemoteNotificationTypeNone != type)
return YES;
}
return NO;
}
分享到:
相关推荐
1. **兼容性**:确保项目兼容不同版本的iOS和多种地图应用。 2. **用户选择**:如果用户安装了多个地图应用,应提供选择界面,让用户决定使用哪个应用进行导航。 3. **错误处理**:当用户未安装任何地图应用或URL ...
在实际操作中,可能会遇到的问题包括但不限于:兼容性问题(不同iOS版本间的差异)、证书和签名问题(用于在非越狱设备上安装应用)、以及可能存在的代码错误或警告。解决这些问题需要深入理解iOS开发的各个环节,...
总的来说,MAC OS X 10.8是一个强大的操作系统,它不仅提供了丰富的功能,还加强了与iOS设备的兼容性。通过ISO镜像文件,用户可以在不同的环境中体验到MAC OS的魅力,无论是实体的Mac设备还是虚拟机上的模拟环境。...
在iOS和Android平台之间,网页开发常常面临一些兼容性问题,特别是在使用`iframe`元素时。`iframe`,即内联框架,常用于在单一HTML文档中嵌入其他网页内容,实现页面组件的复用。然而,iOS系统对`iframe`的处理方式...
2. 错误修复:补丁通常用于修复已知的软件问题,包括崩溃、兼容性问题、内存泄漏等,确保用户能够顺利进行开发和运行项目。 3. 功能增强:可能增加了新的API或改进了现有功能,如光照系统、动画编辑器、粒子效果等...
5. **ios11适配**:说明这个项目的目标是解决从旧版本升级到iOS 11时可能出现的兼容性问题。 【详细知识点】 1. **MJRefresh机制**:MJRefresh库通过监听UIScrollView的滚动事件来触发刷新和加载更多的操作,它包含...
JSONKit 的出现,旨在提供一个兼容性良好的解决方案,特别是在面对 iOS 9 的崩溃问题时,它表现出了强大的适应性。 首先,我们要理解 JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和...
这通常涉及配置Xcode项目,添加必要的库依赖,并解决架构兼容性问题。 2. **捕获摄像头视频流**: 使用AVFoundation框架中的AVCaptureSession,可以捕获iOS设备摄像头的实时视频流。开发者需要创建一个捕获会话,...
通过解压这个文件,开发者可以研究其内容,学习如何适应新的开发环境,或者解决特定的兼容性问题。 总结起来,"x_code_ios_13.1.zip"是一个关键的资源,对于正在使用iOS 13.1系统的开发者而言,理解Xcode 13.1的...
当用户升级到iOS 14.7.x后,可能会遇到Xcode无法正常调试应用的问题,这通常是由于Xcode与新系统版本的兼容性问题导致的。 首先,我们需要理解为什么Xcode在iOS 14.7.x升级后可能无法调试。这可能涉及到以下原因: ...
在iOS开发中,ITMS-90809 是一个苹果App Store审核团队经常会遇到的错误提示,它意味着你的应用程序使用了已被弃用的API,具体在这个案例中,是关于`UIWebView`的使用。苹果从iOS 13开始逐步淘汰了`UIWebView`,并...
它可以帮助开发者复现旧版本的问题,或者在特定的API级别下测试应用兼容性。 总的来说,HBuilderX离线SDK中的Android-SDK@1.9.9.52372_20180929是为开发者提供了一个完整且独立的Android开发环境,使得在没有网络的...
描述中的"ios6.x完美越狱工具 evasi0n 1.1"强调了该工具对于iOS 6.x系列系统的兼容性和越狱的完整性。在iOS社区中,“完美越狱”意味着用户可以完全解除设备的限制,包括安装未经苹果官方认可的第三方应用程序、...
HTML5在移动端,尤其是iOS和Android平台上的兼容性问题是一个重要的议题,因为它直接影响到用户体验和应用的稳定性。本文将深入探讨这些兼容性问题,并提供一些解决方案。 首先,我们需要理解`viewport`元标签的...
在iOS开发过程中,随着新版本的发布,开发者需要对应用程序进行适配以确保其兼容性和用户体验。本篇文章主要探讨了iOS11、iPhone X以及Xcode9的适配问题,帮助开发者解决在升级过程中遇到的各种挑战。 首先,我们来...
在实际应用中,用户可能需要这个驱动来解决升级到iOS 14.7后遇到的硬件兼容性问题,或者为了优化设备性能。 iOS驱动程序的工作原理: 1. 驱动层:在iOS中,驱动程序主要分为内核空间和用户空间两部分。内核空间的...
1. **系统兼容性问题**:某些版本的iOS可能与特定的硬件或网络配置不完全兼容。 2. **运营商设置问题**:运营商设定的网络参数可能与新版本的iOS不匹配,导致无法正常使用网络服务。 3. **内置卡贴机问题**:内置...
在iOS应用开发中,Xcode是苹果官方提供的集成开发环境(IDE),用于编写、调试和构建iOS及macOS应用程序。...这不仅可以避免在真机测试中出现兼容性问题,还能确保应用在用户的不同设备上都能提供良好的用户体验。
在Xcode 9中开发应用时,为了适配iPhone X的特性,如刘海屏和安全区域,苹果引入了一些新变化,这些变化可能导致对iOS 10版本的兼容性问题。本文将详细介绍如何解决Xcode 9适配iPhone X时引发的iOS 10设备不兼容的...