iOS文件选取器

我们在App Store中有很多基于文档的应用程序。 例如iCloud Drive,Google Drive和Dropbox。 在本教程中,我将向您介绍如何在基于文档的应用程序和iOS 11中的应用程序之间同步数据。 Xcode 苹果开发者计划会员 允许在您的开发者帐户中启用CloudKit的权限 供应配置文件 首先,您将创建一个没有任何构建错误的Xcode项目。 在Xcode首选项帐户中添加配置文件和您的Apple ID。 接下来是在项目中启用iCloud。 按着这些次序 : 目标->功能->启用iCloud。(如果未在Xcode偏好设置中添加帐户,则会弹出警报弹出错误) 我们有两种类型的容器默认和自定义。 在这个项目中,我创建了一个自定义容器。 有关启用iCloud的更多信息,请参考链接:https://developer.apple.com/library/archive/documentation/DataManagement/Conceptual/CloudKitQuickStart/EnablingiCloudandConfiguringCloudKit/EnablingiCloudandConfiguringCloudKit.html 如果您完成了这些工作,那么几乎可以成功完成一个项目。 下一级是代码。 Apple提供了一个UIDocumentViewController和UIDocumentMenuViewController来访问基于文档的应用程序。 但是不幸的是, iOS 11不推荐使用UIDocumentMenuViewController 。 因此我们可以使用UIDocumentViewController。 MobileCoreServices 使用统一类型标识符(UTI)信息来创建和处理可在您的应用程序与其他应用程序和服务之间交换的数据。 导入MobileCoreServices 如果导入核心服务,则只有您可以执行文档类型。 您想要的文档类型就是移动核心服务中的文档类型。 让documentPicker = UIDocumentPickerViewController(documentTypes:[String(kUTTypeText),String(kUTTypeContent),String(kUTTypeItem),String(kUTTypeData)],在:.import中) //呼叫代表 documentPicker.delegate =自我 self.present(documentPicker,动画:true) 最后在您的类中确认UIDocumentPickerDelegate。 实现以下委托方法。 选择文档后,将调用该方法。 func documentPicker(_控制器:UIDocumentPickerViewController,didPickDocumentsAt网址:[URL]){ 打印(网址) }如果您觉得本教程很有趣,请分享并鼓掌。

什么是AASA(苹果应用程序站点关联)文件?

( 这篇文章最初发表在 分公司 博客 在这里 ) 想象一下:您想在iOS上开始使用Universal Links,Apple的文档已要求您创建和托管AASA文件。 那么,什么是AASA文件? AASA( apple-app-site-association的缩写)是一个文件,位于您的网站上,并将您的网站域与您的本机应用程序相关联。 换句话说,这是向iOS证明域所有权的一种安全方法。 使用URI方案,这是在iOS 9之前在iOS上打开应用程序的标准方式,应用程序开发人员可以注册自己喜欢的任何URI方案,而iOS无需任何验证即可通过打开应用程序来响应那些URI方案。 例如,如果独立开发人员为测试应用程序注册了fb:// URI方案,那么即使Facebook本地应用程序使用了fb://,也没有阻止它的方法。 AASA文件使Universal Links独特且安全,因为独立开发人员无法在facebook.com域上托管AASA文件。 让我们看一下apple-app-site-association文件的一些基础知识,这些文件将帮助您在域上构建和托管一个文件。 AASA文件包含一个JSON对象,其中包含应作为通用链接包含或排除的应用程序列表和域上的URL路径。 这是一个示例AASA文件: { “应用链接” :{ “应用” :[], “细节” :[ { “ appID”:“ 3XXXXX9M83.io.branch-labs.Branchster”, “路径”:[“不是/ e / *”,“ *”,“ /”,“ / archives / 201?/ *] } ] } } 在AASA JSON中,每个特定于应用程序的域都包含一个appID和path的字典。 让我们看一下AASA JSON对象中的每个键是什么: applinks :由于AASA文件还可以用于其他目的(例如,共享的Web凭据),因此applinks对象定义通用链接使用的文件部分。 apps :apps数组必须存在,但始终为空。 […]

iOS中带有推送通知的多种方案

这是我的有关使用推送通知的注意事项,已针对iOS 9更新 如何注册 注册以接收推送通知 在iOS 8+中不推荐使用registerForRemoteNotificationTypes 从这往哪儿走 希望本文对您有所帮助。 iOS的变化很快,因此我提到的某些内容在您阅读时可能已过时,如果是的话,请告诉我。 这是一些更有趣的链接 计划,注册和处理通知 到达iOS应用程序时处理推送通知 如果应用程序已经在后台运行,如何响应推送通知视图 在后台时didReceiveRemoteNotification 如何在启用后台模式的情况下处理远程通知 两次调用远程通知方法

成功开发iOS App的5条提示

苹果公司是领先的移动平台之一,因此为苹果公司用户开发应用程序(无论是针对iOS,watchOS还是tvOS的应用程序)对于企业所有者而言都是巨大的收益。 苹果公司以其高质量的应用程序和对iOS应用程序开发人员的严格要求而闻名。 遵循标准惯例来接受App Store不仅很重要,而且对于用户友好性和可用性也是必不可少的。 iOS开发技巧 1.您内容的布局 一个好的经验法则是,内容应适合屏幕,以便用户无需向左或向右滚动。 Apple iOS设计的三个基本规则是清晰度,尊敬度和深度。 清晰度:请务必使文本足够大,以便在移动设备上轻松阅读。 尊敬的:布局应该流畅且直观。 避免过多的阴影,边框和渐变。 在没有争夺聚焦于基本对象(例如图像和文本)的设计的情况下,使设计整洁。 深度:由于用户浏览每个屏幕,因此应该考虑他们会渗透更具体的内容。 字体大小也很重要。 您的用户不需要放大或缩小即可阅读您的内容。 字体颜色也是一个因素,因为在移动屏幕上很难看到较浅的字体,尤其是在用户不在阳光下的情况下。 市场上有几种仿真器,可用于在将其发布到应用程序商店之前检查其布局。 图像和内容应随屏幕缩放,但是市场上有几种屏幕尺寸。 即使不能全部测试它们,也请确保检查最通用的那些。 最近,该类型支持iPhone 5,而最新的代码则至少应支持iOS9。一些开发人员支持iOS8。通常,从当前发布的版本开始保持“ n-1”的向后兼容性是很好的。 但是,通常也要等到用户群降至阈值以下才弃用对版本的支持。 决定要支持的操作版本是开发人员的责任。 2.在设计UI元素时要牢记3D Touch 对于刚接触移动应用程序开发的开发人员而言,很难从小按钮和链接移至较大的对象,从而使用户可以轻松选择下拉项或点击元素。 最好有一部iPhone来查看直观设计的工作方式。 例如,当用户点击一个下拉元素时,将显示一个弹出窗口,其中包含用户向上或向下滚动的项目列表。 用户选择一个项目后,您的应用程序应移至下一个元素,并使其对用户可见。 请记住,具有3D触摸功能的设计UI元素与移动应用程序而不是台式机的工作方式大不相同。 您的设计元素应与目标平台匹配。 看一下iOS的标准组件。 请注意,它们与Android不同。 创建标准的UI元素有助于使您的应用对用户而言更加直观。 3.使用错误处理陷阱错误 每个编码器偶尔都会在其程序中产生逻辑错误。 用户插入您没有管理的意外输入也没什么不同。 例如,也许您有一个用于用户区号的输入文本框。 您检查字母字符,但是忽略检查特殊字符,例如感叹号或问号。 如果以后将数据存储在数字存储系统中,则应用程序将潜水。 应当对这些逻辑错误进行管理,以使应用程序永不崩溃。 或者,应将错误消息返回给用户。 iOS应用应使用错误协议。 您可以从类中确定自定义错误消息。 让我们考虑一个客户端错误枚举器的示例。 enum InputError : Error { case notNumeric case […]

Fastlane iOS,干净的模板。

目标? 大家好,我的文章的目的是让您清楚地了解多个项目中iOS快速通道的使用。 你不知道快车道吗? fatslane是一个移动自动化工具,可以帮助您轻松管理一些繁重的任务,正如其网站上所述: 构建和发布移动应用程序的最简单方法。 fastlane处理繁琐的任务,因此您不必 Fastlane是一款出色的工具,可在Android和iOS两种平台上使用,它也是用ruby编写的,并且具有现有的Swift版本。 Fastlane帮助交付和管理移动版本以及许多其他事情(例如管理测试人员列表,屏幕截图,代码签名等),还可以轻松与发行工具(TestFlight,Google Play,Crashlytics,HockeyApp …)的顶部进行交互。 有了这些给定的功能,它就成为了移动分发工具的顶端。 直截了当 在讨论fastlane之后,我们将以最小的努力展示如何实现对多个项目有效的干净fastlane集成的步骤。 我鼓励您看一些大型公司快速通道集成的示例,不要忘记官方文档。 这将帮助您充分满足项目需要。 好吧,我们应该现在开始,所以我们的快速通道目标是采取一些行动,让他们列出: 交付至App Store 交付给TestFlight 运送到织物 更新设备列表(针对每个配置文件) 安装依赖项(我知道这是不值得的) 别忘了采取一些内部操作,例如松弛通知和内部构建。 这里有什么新消息? 我们的主要目标是集中于所有项目在多个项目上的可重用性,每个项目的更改最少。 因此,我们的fastlane回购结构如下所示: 基本上,如果您熟悉fastlane,您会注意到Appfile和Fastfile始终存在。 因此,让我们定义上面显示的每个现有文件或存储库的需求 changelog.txt :包含每个已发布应用程序的更改日志或发行说明(用于beta测试),其本质上用于Fabric发行说明。 buildnotes.md :这是用于历史记录的痕迹,在每次Beta测试交付后,此文件将与新内容串联在一起,基本上是交付日期 , 应用程序名称, 应用程序版本和发行说明。 Invitation_emails.txt :每个crashlytics版本的邀请电子邮件列表,每行一封电子邮件。 devices.txt :要在现有配置文件中添加的设备列表,这是一个敏感文件,因此您必须尊重现有格式(多余的空间会造成问题)。 testflight_testers.csv :为TestFlight构建添加的测试人员列表,这也是Apple提供的尊重该文件的格式。 元数据和屏幕截图:这些存储库包含应用商店信息的所有必要数据,请在此处查看以更好地理解。 证书 :包括下载的证书和配置文件。 IPA:将具有生成的应用程序和dSYM文件。 .env👽 :这是一个环境变量,它包含所有项目配置,这将是每个快速通道集成的主要负责文件,当然还要与AppFile配合使用。 就这样,更改这两个文件,而无需处理任何编码文件。 嗯,.env里面有什么? 好吧,看看: 您可以看到大多数变量都带有注释,每个注释代表变量的内容,因此您的角色将为每个项目填充这些变量,您很高兴。 也别忘了Appfile 您想看看现有的车道吗? 这里是 在to_appstore […]

银行庆典应用程序-使最难忘的场合独特

生日或周年纪念日始终是每个人的特殊日子。 借助Banking Celebrations应用程序,您可以在特殊情况下通过添加可兑现的资金来发送电子贺卡。 该应用程序允许您通过上传视频或图片来发送特殊消息。 这是一个iPhone应用程序,可为您提供生日和周年纪念日汇款(我们称为可兑现雄鹿)的功能。 该应用程序即将在App Store上启动。 该应用程序旨在通过一种简单而有洞察力的方式使每一步变得更容易。 Bankable Celebrations应用程序不仅会让您的家人和朋友感到惊讶; 您也可以使很多其他人感到惊讶。 消息选项卡将显示用户与电子卡接收者之间交换的所有消息。 历史记录选项卡将显示所有已接收,已发送和草稿的电子贺卡,供以后使用。 用户可以在“帐户”标签中设置和查看其他详细信息,例如– ·查看和编辑配置文件 ·可用的和选定的会员计划 ·设置通知以通知接收消息 ·帮助和常见问题解答,指导用户使用应用程序功能 ·反馈,条款和条件以及有关该应用的信息 ·从应用程序注销 该应用程序将始终保持您的个人数据安全。 这个程序可以确保您在发送钱时不必后悔共享您的个人数据。 甚至收件人也可能不知道您共享的详细信息。 要发送图像或视频,您只需要注册帐户,创建个人资料图片,从电话簿中选择联系人,从图库中选择图像或视频并在社交媒体上共享它们即可。 您也可以通过此应用程序以可赚钱的大头汇款。 您只需根据情况选择主题和模板,选择要发送的金额并创建个性化电子卡。 仍处于开发阶段的Bankable Celebrations应用程序尤其适合iPhone OS用户。 该应用程序始终确保您的个人数据和信息始终安全可靠。 您在应用程序中共享的任何数据和信息,始终受到保护。 此外,这非常划算,您也可以从图库中选择图像或视频,然后通过此应用发送。 这个程序的所有设置使特殊的日子更加令人难忘和愉快。 此应用即将在iOS用户的App Store中提供。

Destrinchando o iOS的人机界面指南—#7

使用者意见 Um aplicativo,alémde cumprir com a suua proposta,precisa se comunicar bem com ousuárioe fazerconexõescom aplicativos,uma UI View com com seu objetivo forneceropçuespara ousuário。 Mas como isso funciona naprática吗? Um bom exemploéquando vamos excluir algo no nosso celular,casovocê精确的exclir um email no seu aplicativo de email(例如:Gmail,Outlook,Mail,entre outros)uma mensagem deConfirmaçãoaparecerámesmo depois在乌兹别克斯坦(Játenha tocado obotãode excluir)。 Isso服务于evitando acidentes,可用于evi quevocêexclua algo […]

适用于iOS [3.5]和Android [3.4]的Meetizer的新版本

最近几周,我们一直在努力使Meetizer对您更有用。 我们的使命是不断提高,以便您和希望与其他人见面的任何人都喜欢创建和加入自发聚会,并享受最佳的社交体验。 您想知道这个新版本的应用程序有什么功能吗? 你会爱上它🙂 特色聚会 。 现在,我们还将建议您在城市周围进行酷炫的聚会和活动。 您会在带有标签的“附近”标签中找到它们。 Android [3.4] 注册集成并使用Google登录。 您现在可以使用Google或Facebook注册并访问您的Meetizer帐户。 我们希望提供更多替代方案来访问和自定义您的Meetizer帐户,以便您可以通过最喜欢的应用程序选择注册。 请记住,未经您的同意,我们绝不会在Facebook或Google上发布任何内容,因此请使用首选帐户访问Meetizer,无需担心🙂 iOS [3.5] 改进了Facebook集成。 我们已经改善了与Facebook的集成,以便您在注册和使用Meetizer登录时更加敏捷。 支持Touch 3D(“ Peek&Pop”和“ Quick Actions”) 。 如果您拥有iPhone 6s或6Plus,则很幸运,因为我们已经集成了Touch 3D。 这种集成将增强您使用该应用程序的体验,并使您能够以更快,更直观的方式创建聚会,探索您的区域或与Meetizer进行交互。 如果您仍有疑问,我们想举一个例子: 你喜欢刚刚读的书吗? 升级到最新版本的iOS [3.5]和Android [3.4],并享受新功能。 我们希望你喜欢他们。 我们很高兴获得您的反馈意见,以不断改进,因此,如果您有任何意见或问题,请写信至feedback@meetizer.com。 请记住,如果这个周末您仍然有空,您还等什么? 你周围有很多聚会。 加入并享受! 保持更新!

介绍StickerPop API

我们正在启动贴纸API, 请单击此处 以访问您的项目。 今天,我很高兴分享StickerPop API的发布。 我们的贴纸API是易于使用的资源,开发人员可以将StickerPop的大型高质量贴纸库合并到自己的应用程序中。 通过访问我们新的API网站,您现在可以访问我们的技术文档,让您开始幻想将贴纸添加到自己的项目中的有趣方法。 StickerPop API是将StickerPop强大的搜索引擎和贴纸库集成到您要构建的任何内容中的最佳方法。 集成API使您的用户随时可以轻松找到该标签。 结合搜索算法,标签,名称和等级,可以显示最好的标签。 我们使用StickerPop API的目标是帮助应用获利,保留用户并变得更加有趣。 添加贴纸时,您的应用变得更加丰富多彩。 我们的StickerPop API在构建时就牢记我们的使命。 API是我们长期愿景和使命的重要组成部分。 我们的使命是赋予创作者更多的收入,创造更多的力量,并使每个人的生活更加精彩。 StickerPop API极大地扩展了我们创建的内容的范围,并允许我们在互联网上将其联合。 当我们的内容触及更多时,我们可以更好地为市场中的艺术家提供服务。 设计贴在StickerPop上的艺术家将获得更多曝光,我们知道这将进一步推动其个人品牌的成功。 入门。 StickerPop API入门非常容易。 只需访问我们新的API门户以请求访问权限即可。 然后,我们将要求您分享以下几件事: 您的应用名称及其简短说明(包括网络或App Store链接)。 简要描述如何将StickerPop API集成到您的应用中。 我们的审批流程很广泛,但仍然可以保护我们的品牌和内容的生存空间。 增加参与度。 增加保留率。 使用StickerPop API将您的应用贴上标签。 从这里开始探索StickerPop API。

反应NativeでiPadの画面分割に対応させる方法

React Nativeでこれをやるには少々问题があって, Dimensionsがうまくウインドウのサイズを返してくれない。“ Split View”でも“ Slide Over”でも常に同じ値を返す: console.log(Dimensions.get(‘screen’)) // {fontScale: 1, width: 768, height: 1024, scale: 2} console.log(Dimensions.get(‘window’)) // {fontScale: 1, width: 768, height: 1024, scale: 2} それは,最も外侧にViewを一枚敷いて, flex: 1をスタイルに设定して, onLayoutにイベントハンドラを设定を,そのビューのサイズを取得することだ。そしてそのサイズuxReduxのストアなりReactのContextなりに保存しておく。 适应性布局提供商/消费者 分いわゆるProvider-Consumerパターンの形を取る。サイズデータはReactのContext APIは使わずReduxのストアに格纳する。 提供者 // @flow // adaptable-layout-provider.js import * as React from ‘react’ import { View, StyleSheet } from ‘react-native’ import { compose, […]