Tag: icloud

有人如何窃取您的iCloud密码

这是iOS向用户展示的默认“登录到iCloud”对话框(有时过于频繁且没有明显原因)。 令我感到恐惧的是,这是一个非常简单的登录提示,提示有人进行诊断,包含在诱饵应用中并用来窃取iCloud密码。 电子邮件地址 尽管开发人员无法轻松获得用户的iCloud电子邮件,但是Apple提供了API,用于验证电子邮件地址是否属于iCloud帐户。 诱饵应用程序可以在注册过程中向用户询问其电子邮件,或从其Facebook帐户获取该电子邮件。 稍后,攻击者可以验证电子邮件是否属于某个帐户,然后显示视频中显示的弹出窗口。 如果电子邮件不属于iCloud帐户,则可以将提示修改为提示所提供的电子邮件地址不正确,而只是在提示中询问电子邮件和密码-大多数人不会三思而后行。 问题 真正的“登录iCloud”弹出窗口似乎随机出现,因此很难检测到假表格。 此外,iOS使用通用的UIAlertController要求用户输入安全信息,这意味着普通人很难检测到假信息。 iOS不应让iOS从警报视图中要求用户登录,而应在iCloud部分启动设置,以便用户可以安全登录。不幸的是,用户已经习惯了当前的对话。 我感到即使苹果确保了他们登录iCloud流程,大多数人仍然会遭受这种攻击。 您可能会认为这样的应用程序将永远不会被Apple接受,但是为了在审阅过程中在雷达下飞行,攻击者可以将弹出窗口延迟显示,直到该应用程序被批准为止。 例如,可能存在一些服务器端逻辑,指示何时以及向谁显示伪造表单。 跟上我在Twitter或网站上的最新动态,请分享这篇文章以提高认识。

使用Swift快速通过iCloud同步用户数据和首选项

2018年4月13日 这是用户的常见要求……“我有iPad和iPhone,如何将我的收藏夹保存在一个设备上,让它们出现在另一台设备上?” 如果用户必须创建一个帐户才能使用您的应用,则可以将此功能内置到您的后端中。 但是,有时候,我们不想强迫用户创建帐户来使用我们的应用程序。 在这种情况下,有一个简单的解决方案,只需几行代码即可跨设备同步用户数据。 这是iCloud键值存储。 它就像本地词典一样工作,对于每个iCloud用户而言都是唯一的,并且会自动在该用户所属的每个设备之间进行同步。 如果您使用userDefaults存储用户数据,那么您已经到了一半。 iCloud键值存储的工作方式非常相似,其附加好处是数据可以在应用删除后继续存在。 假设有两个设备的用户下载了您的应用,他们将生日输入到一个设备中并保存了。 您要将这些数据存储到iCloud键值存储中,以便当他们在另一台设备上打开您的应用程序时,生日将已经自动存在。 这是做什么的… 在Xcode中选择您的项目目标,然后打开“功能”部分。 激活iCloud并确保选中“键值存储”。 首先,创建一个keyValueStore。 您可以根据需要创建任意数量的字典,每个字典实际上都是不同的字典。 我通常创建一个全局实例,然后可以从任何类中调用它。 var keyStore = NSUbiquitousKeyValueStore() 将数据添加到您的keyStore keyStore.set(“03/04/1989”, forKey: “userBirthdate”) 检索应用程序新实例上的数据 if let storedUserBirthdate = keyStore.string(forKey: “userBirthdate”) { //Use retrieved birthdate } else { //Ask user for birthdate } 到目前为止,keyStore的行为与UserDefaults完全相同,即数据将仅存储在本地。 为了允许所有iCloud用户的设备访问数据,您需要通过以下方式进行同步: keyStore.synchronize() 真的就是这么简单。 要记住的一件事是同步不一定立即发生。 正如Apple Docs所说:同步发生在“适当的稍后时间”。 iCloud键值存储旨在同步不需要持续和超快速更新的数据。 用户设置和偏好设置之类的东西。 最初于 2018 […]

CK分享一步一步

共享CloudKit项目的指南 CKSharing是在WWDC 2016上引入的,它是他们的两个开发者演示的主要部分:CloudKit最佳实践和CloudKit的新功能。 通常,当有人说我需要在进行编码项目之前观看WWDC视频时,我通常会之以鼻,但这绝对是对的。 您确实必须观看这两个视频,才能对正在发生的事情有基本的了解。 而且,CloudKit 共享可能是我见过的Apple发布的Tentpole库中记录最少的主要功能。 写这篇文章几乎是公民的责任,这样其他人就不会像我所做的那样挣扎。 缺乏文档的原因之一是,我不认为CloudKit被开发人员经常使用。 与我交谈的大多数开发人员朋友都非常忙于使用JSON解析自定义后端,Firebase等…,以至于不介意最新和最出色的CloudKit产品是什么。 他们的损失! 该项目: 我从事应用程序开发已经有几年了(无论是打开还是关闭,大部分时间都是关闭的),可以帮助我追踪员工的工作时间。 这个概念很简单:有一个Manager ,他们有一个向他/她报告工作时间的Employee 。 允许员工自己添加,编辑,删除工时,并且经理在任何情况下都会收到通知。 然后,该应用将所有这些时间加起来,以便可以计算出工资单。 您可以想象,可以轻松地从这样的结构中构建其他功能,例如创建工资单,计算预扣税等。我们将只关注共享时间部分。 CloudKit结构: 由于一个经理可以有多个员工,因此我们在架构中需要一个Employee CKRecord类型。 它将包含名称,地址,工资率等…作为值。 这些小时将由我也在架构中创建的WorkEvent CKRecord表示。 每个WorkEvent都有一个startTime,endTime,注释等…以及对Employee的引用。 现在我们只需要一个放置这些记录的地方。 公共数据库:在这里存储您希望每个人都可以访问的内容。 公共数据库中没有自定义区域,默认区域中所有内容都存在。 我们的数据(上述)显然是这两个方的私有数据,因此使用公共数据库是不可以的。 可以通过密钥共享来公开进行操作,但是基本上是通过模糊处理来实现安全性,这不理想。 私有数据库:您可以在其中存储不想让公众看到的记录 。 专用数据库具有默认区域,用户可以创建自定义区域。 重要提示 :将您要共享的任何内容放在私有数据库的自定义区域中。 对于此应用程序,管理中心将使用他/她的私有数据库来存储该应用程序的所有记录。 我们将为每个员工创建一个自定义区域,其中将有一个Employee CKRecord和许多WorkEvent CKRecords。 经理将订阅其私有数据库中的更改。 共享数据库:此数据库包含您已被授予访问权限的“对象的窗口”。 您在共享数据库中看到的记录存在于其他人的私有数据库中。 您只是有一个进入该对象的窗口 。 换句话说,您是共享数据库中项目的“贡献者”,而不是所有者。 对于此应用程序,员工将通过共享数据库访问其WorkEvents和Employee CKRecords。 他们将订阅共享数据库中的更改。 Manager的共享数据库中将没有任何区域,因为该信息位于其私有数据库中。 了解这一点非常重要。 注意:不要让术语“共享区域”绊倒您。 没有CKRecordZone这样的东西,您可以将记录放到与其他用户自动共享的地方。 共享区域只是为您创建的用于访问和添加共享记录的区域,但是它本身不会导致对象被共享,这将在以后进行介绍。 这将是什么样的: […]

SWIFT:代码块可轻松访问iOS相机,照片库,视频,文件

照片,视频,文档对布告栏用户至关重要-这是他们交流和分享工作场所中日常活动的方式。 在为该应用的iOS版本开发此功能时,我意识到没有单个代码块可以从设备访问媒体文件。 这就是这件作品的来源。 如果您只需要一段代码即可完成此操作,请随时将其插入您的应用程序。 以下是创建自定义类的分步教程, 该类将帮助开发人员使用swift 4访问基本附件,例如“相机图像”,“照片库”,“视频”和“文件导入”。 TL:DR —您可以在此处查看其完整的GIST文件。 我已将其命名为AttachmentHandler.swift 步骤1:使用UIAlertController创建操作表 通过使用UIAlertController创建操作表。 我将在操作表中列出所有四个选项,并在底部列出“取消”按钮。 如果您想进一步了解UIAlertController。 请您在这里检查。 您也可以查找UIActionSheet,但这已被描述。 func showAttachmentActionSheet(vc:UIViewController){ currentVC = vc 让actionSheet = UIAlertController(标题:Constants.actionFileTypeHeading,消息:Constants.actionFileTypeDescription,preferredStyle:.actionSheet) actionSheet.addAction(UIAlertAction(title:Constants.camera,style:.default,handler:{(action)-> Void in self.authorisationStatus(attachmentTypeEnum:.camera,vc:self.currentVC!) })) actionSheet.addAction(UIAlertAction(title:Constants.phoneLibrary,style:.default,handler:{(action)-> Void in self.authorisationStatus(attachmentTypeEnum:.photoLibrary,vc:self.currentVC!) })) actionSheet.addAction(UIAlertAction(title:Constants.video,style:.default,handler:{(action)-> Void in self.authorisationStatus(attachmentTypeEnum:.video,vc:self.currentVC!) })) actionSheet.addAction(UIAlertAction(title:Constants.file,style:.default,handler:{(action)-> Void in self.documentPicker() })) actionSheet.addAction(UIAlertAction(title:Constants.cancelBtnTitle,style:.cancel,handler:nil)) vc.present(actionSheet,动画:true,完成:无) } 步骤2:检查授权状态 .. 来自PHPhotoLibrary 。 这意味着我们必须验证用户是否已获得访问其照片的权限。 在Info.plist中添加两行 隐私权-相机使用说明 隐私权—照片库使用说明 […]

NSMetadataQueryDidUpdateNotification不工作

有人能告诉我下面的代码是从iOS 5 Developer's Cookbook改编的吗? – (void) startMonitoringUbiquitousDocumentsFolder { // Remove any existing query – stored in local instance variable if (alertQuery) [alertQuery stopQuery]; // Search for all file names alertQuery.predicate = [NSPredicate predicateWithFormat: @"NSMetadataItemFSNameKey == '*'"]; alertQuery.searchScopes = [NSArray arrayWithObject: NSMetadataQueryUbiquitousDocumentsScope]; // Subscribe to query updates [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(alertUserToUpdates:) name:NSMetadataQueryDidUpdateNotification object:nil]; [alertQuery startQuery]; } […]

iCloud会将Documents目录中的所有file upload到云服务器吗?

我的印象是,iCloud只能使用UIDocument文件。 其他types呢? 此外,如果我的用户的file upload到云中,如果我的应用程序是通用的,他可以使用这些文件与他所有的设备?

在Xcode 5.0中的iCloud Ubiquity容器奇怪的问题

我已经在商店里分发了我的iPad / iPhone通用应用程序“消费”。 该应用程序使用iCloud UIDocument在设备之间共享数据库。 工作正常;-)现在我想开发一个OS X的垂饰访问相同的iOS iCloud文档。 在Xcode / Capabilities中,我尝试将iOS项目的Ubiquity容器添加到Mac项目,但是我得到一个红色的“!” 在Mac项目中。 如果我点击“修复问题”,“!” 在Mac项目上消失,但出现在iOS项目上。 任何提示?

在tvOS上的iCloud同步

目前为止,有没有人设法让iCloud在tvOS上工作? 我正在使用键值存储,并成功将所有内容保存在iCloud中。 但是,它不会同步iOS-App和tvOS-App之间的数据。 我为这两个应用程序使用相同的捆绑标识符。 有没有人遇到同样的问题?

完整CoreData上传(备份)到iCloud驱动器,并在需要时进行恢复

我的项目是基于CoreData的应用程序。 上传sqlite文件到CloudDrive是否足以在需要时恢复数据? 有没有教程如何实现它?

将Core Data中的一个实体同步到iCloud

我是一名iOS开发人员,正在尝试使用iCloud和Core Data作为阅读器应用程序。 我为两个实体设置了核心数据,一个用于一个项目,另一个用于频道。 频道实体包含我将用于将用户的订阅网站同步到所有设备的信息。 在我自己的研究中,我只find了一种在Core Data中同步两个实体的方法。 我的问题是: 是否有可能只同步一个核心数据实体到iCloud? 我可以发布我的代码,如果它会帮助。