适用于iOS的Firebase的ReactNative推送通知

什么是推送通知? 推送通知是在移动设备上弹出的消息。 应用发布者可以随时发送它们; 用户无需进入应用程序或使用其设备即可接收它们。 他们可以做很多事情; 例如,他们可以显示最新的体育比分,让用户采取行动(例如下载优惠券)或让用户知道某个事件(例如快速销售)。 推送通知看起来像SMS短信和移动警报,但它们仅覆盖已安装您的应用程序的用户。 每个移动平台都支持推送通知-iOS,Android,Fire OS,Windows和BlackBerry都有自己的服务。 下面,我将展示如何为iOS平台集成ReactNative推送通知。 请参阅此文章,以获取有关推送通知的更多信息: https : //www.urbanairship.com/push-notifications-explained 集成到iOS平台的ReactNative Push Notifications中的步骤 首先,创建一个React Native新项目,我们将配置推送通知。 反应本地初始化反应推送通知 现在,当您安装React Native时,需要考虑的几件事才能使它们正常工作而没有任何错误。 您应该使用XCode 10(当前最新),React Native 0.55(当前最稳定)。 接下来,我们为React Native https://github.com/evollu/react-native-fcm安装Firebase Cloud Messaging软件包 react-native链接react-native-fcm 安装Firebase Cloud Messaging Package之后,我们需要使用CocaPods安装FCM框架。 要安装它,我们首先在刚刚创建的“ react-push-notifications”项目上的“ ios”目录中导航,然后运行以下命令: cd ios && pod初始化 所以,我的PodFile看起来像这样 #取消注释下一行以定义项目的全局平台 平台:ios,“ 9.0” 目标“反应推送通知” #如果您使用的是Swift或想使用动态框架,请取消注释下一行 #use_frameworks! #pods for react-push-notifications pod“ Firebase […]

软件工程师的角色-专业咨询的明确内容

在我担任软件工程师的整个过程中,尤其是在过去的一年中,我遇到了许多想法,概念,良好实践,设计模式,体系结构,思想流等等。 对于任何专业开发人员来说,自然都对如何制作更好的软件产生了兴趣。 经过大量的讨论,研究和更多的经验,直到最近才让我想到,所有这些都可以用几个简单的词来概括:“您必须明确”。 建筑 让我们从所有人一直以来最喜欢的架构开始。 在软件开发方面,软件体系结构显然是极其重要的主题。 在整个编程历史中,出现了许多旨在帮助您拥有最佳架构的原理和设计模式。 但是,无论您的信念或偏好是什么,它们都倾向于相同的目标: 明确 。 无论我们谈论的是Clean Architecture , VIPER , MVVM , MVC还是任何其他形式,它们的唯一目标是帮助您弄清自己在做什么和如何做。 在一些会议上,我从罗伯特·C·马丁(Robert C. Martin)(鲍勃叔叔)那里看到了他的例子,此刻一直困扰着我。 让我问你一件事,向你证明这一点。 你能告诉我下图是什么吗? “ 好吧,这不是很明显吗? 您可以告诉我,“ 这是大教堂的蓝图! ”。 我假设您不是我还是建筑建筑师或房地产专业人士,但是,我们所有人仍然能够马上说出那些是大教堂的建筑计划。 当我们看到它时,它尖叫起来就是为了建造一座大教堂。 那么,在软件体系结构方面,为什么要有所不同呢? 如果您的体系结构很棒,那么对任何打开您的项目的人来说,它应该立即变得显而易见。 哦! 这显然是银行帐户管理应用程序! ” “ 哦,很明显,这是一个在线书店应用程序! ”。 如前所述,无论您最喜欢的概念或设计模式是什么,在拥有良好的软件体系结构时,都可以用以下几句话来概括:“ 您必须明确 ”。 行为驱动的发展 BDD是一种软件开发过程,其灵感来自于测试驱动开发(TDD)和其他来自面向对象编程的设计概念。 在Dan Dan的带领下,这一过程在过去几年中越来越受欢迎,而我有机会在上一个项目中进行实践。 BDD的目标是通过一起指定业务需求来帮助项目的开发人员和业务人员进行协作,并编写测试以验证软件中的那些业务需求。 这样做有助于在项目的业务和技术方面都清楚应用程序应该做什么以及应用程序是否正常工作。 这可以用几句话来概括:“ 您必须明确 ”。 域驱动设计 DDD是由Eric Evans创建或至少明确定义的软件开发方法。 它的目的是将项目的重点放在领域及其逻辑上。 这样,它允许程序员,项目经理,利益相关者和项目中涉及的任何其他人共享使用普遍存在的语言讨论的领域的相同愿景,从而彼此理解。 […]

iOS gitNoteTaker React Native示例笔记

介绍 该项目来自eggheadIO的react native教程。 它类似于reactJS教程,但是firebase访问部分略有不同。 本教程使用传统的REST提取方法,而不是为Web开发人员使用Firebase建议的方法。 从我的角度来看,React native似乎比reactJS容易一点。 我在iPhone和模拟器上都测试了该应用程序,它们工作正常。 跑 这是您可以运行和测试应用程序的方法。 使用XCode打开ios文件夹中的.xcodeproj文件,然后运行该应用程序。 该应用程序将在模拟器上启动。 您还可以在Chrome浏览器中启动调试器。 模拟器上的Cmd + D显示菜单,您可以选择使用远程调试器,即Chrome浏览器调试器。 模拟器上的Cmd + R将为您重新加载应用程序。 当您对代码进行一些更改时,这是一个很好的功能。 这是完整功能测试的链接。 注意 我从与Firebase的接口中注意到的一件事是,获取方法由于不是官方推荐的方法,因此将为笔记项的索引号创建随机字符串,而不仅仅是按顺序创建数字。 我必须更改info.plist文件中AppTransport安全设置下的允许任意加载,以便iOS进行提取方法链接。 当我将应用程序上传到手机上时,我意识到键盘将覆盖输入框,因此我进行了一些研究,并决定使用键盘垫片来解决问题(此处是链接)。 信息 我使用开发者帐户将应用程序上传到我的iPhone(单击此处了解更多说明)。 感谢王浩宇(Apple)开发人员帐户。 如果您想知道如何启动React Native iOS应用,可以转到react native入门页面。 其中涉及一些ES6语法。 使用了很多箭头功能。 箭头函数的一个好处是语法,因此我们不需要在回调函数中使用bind(this)(除非它必须在组件属性分配中使用)。 有关arrow的更多信息,请参考本文。

作为iOS开发人员实习12周-第五周

我做了一个演讲,使用iPad应用程序参加了公司的野餐! 先进的斯威夫特 我在Chris Eidhof先生的Advanced Swift上做了30分钟的演讲。 我学到了很多关于Swift语言功能的知识,甚至还了解了诸如for循环之类的东西在引擎盖下如何实际工作的知识。 我写了大约八页的笔记,并创建了一个幻灯片,其中包含28张幻灯片以准备演示文稿。 我在iOS部门公司会议上作了介绍。 在演讲过程中,我很高兴意识到书中有些东西甚至连高级的iOS工程师都不知道,因为没人知道那里的一切,这没关系! 在演讲开始的那几天,我非常紧张,最终进展顺利。 除了在第一张幻灯片中我列出了错误的作者之外……–我只是在检查大家是否都在注意😅LOL jk。 事后看来,将演示文稿摆在其他演示文稿之前,以在真正的演示文稿之前捕获此类错误是一个好主意。 在iPad应用程序上工作 在本周之前,我之前从未从事过iPad应用程序的开发,因此有机会获得如此激动! 我注意到的唯一非常明显的区别是,iPad的屏幕尺寸显然比iPhone😂大。 当我使用iPad模拟器运行该应用程序时,它比实际的iPad设备要慢得多。 请务必注意这一点,因为该应用程序的某些错误在模拟器中并不明显,而在iPad设备上则显而易见。 —始终在设备上测试应用程序。 这是我本周了解到的一些信息: UIVisualEffectView UIVisualEffectView是用于创建模糊效果的对象。 上面的图片是一个模态UIView,在UIView上带有ImageView。 请注意x按钮旁边的模糊程度如何变暗,这是因为此模式UIView后面有一个深色的菜单栏。 首先创建一个具有模糊效果的UIView。 使用阴影实现灰色模糊效果 如果您查看此blurView,它具有灰色。 它是blurView后面的白色。 应该是白色的吧? 那么这是怎么发生的呢? 无法为此模糊效果设置颜色。 这是通过将阴影添加到模态呈现的UIView并将阴影半径设置为一直延伸到屏幕边缘来实现的。 动画阴影看起来要平滑得多。 公司野餐 Fuzz的野餐是在前景公园。 很高兴认识该公司更多的人,并通过热狗,汉堡和饮料与他们聊天。 我很高兴Fuzz拥有如此轻松的活动,使我能够在轻松的环境中与同事保持联系。 据预测,雷雨将在八点开始暴风雨,但它来得有点早,所以我们都去了附近的酒吧。 这是结束一周的愉快方式。 再见第五周,第六周你好!

AppFollow 3.8多汁的夏季更新🍉🍓

关于“今日精选”页面,有什么很棒的? 历史记录 我们默认显示最近4天的特色应用程序,自2017年11月以来可以获取历史数据。您可以在一个地方分析趋势,国家和应用程序。 带故事的卡片 卡有4种类型:每日应用,每日游戏,故事和收藏。 您可以轻松共享任何卡,并让您的朋友羡慕您。 明天的精选应用 有点神奇,格林尼治标准时间下午2:00,我们展示了明天的精选应用程序。 成为第一个认识并与您的朋友分享的人😎并且不要忘记准备服务器和支持团队。 搜索应用 如果您跟踪自己的应用程序或竞争对手,请了解全年和所有国家/地区有关特色应用程序的数据。 只需在搜索栏中输入应用名称,然后追踪所有推荐结果即可。 统计 我们在“今日”标签中收集获得最多关注的应用和游戏。 默认情况下,我们将向您显示所有国家/地区的领导人,您将可以按任何国家/地区或特定时间段对其进行分类。 松弛通知 关于特色应用程序,最方便的事情是Slack通知。 成为第一个发现您或您的竞争对手何时成为Today的人物。 如何配置Slack通知。 此功能仅适用于高级帐户。 如果您想免费试用试用版,请与我们联系。 梦想着让您的应用具有特色? 我们很快会告诉您如何实现的。 2.对Mac应用程序评论的回应 在WWDC会议期间,Mac App Store将变得更加流行,因为Apple宣布进行了重新设计并提高了可发现性。 我们已决定帮助您处理Mac应用程序的反馈-以与iOS和Android相同的方式答复它们。 设置与Mac App Store的集成。 您是否需要Mac App Store的更多选择? 请与我们联系help@appfollow.io。 3.亚马逊产品支持 对于许多客户而言,移动应用程序只是业务的一部分。 例如,您正在亚马逊上出售智能吸尘器,并且已经连接了该应用程序以将吸尘器控制到AppFollow并监视评论,评分和请求。 现在,您可以获取有关产品本身的分析信息! 追踪亚马逊的商品。 4.测试人员的反馈支持 Android开发人员很幸运能够在该应用上线之前进行封闭的Beta测试。 此时收到的反馈非常重要-它可以帮助在发布之前进行修改并最终确定应用程序。 通过AppFollow平台与Alpha和Beta测试人员联系。 他们的反馈和回复不会在Google Play中发布。 有关Beta反馈的更多信息。 5. API中的现成请求 如果您使用我们的API来接收和编辑应用程序上的数据,我们将为您带来一些好消息! 现在,我们的用户可以使用现成的方法,签名和参数。 只需复制它们即可继续工作。 此处有更多详细信息。 使用我们的帮助中心设置API。 如果您经常每天更新数据,请与我们联系。 […]

Swift中的单元测试笔尖

这是一个简短的教程,展示了如何将TDD原理应用于iOS项目中的笔尖设置,希望这将使您对一般的笔尖和TDD实践有更好的了解。 第一: 打开Xcode并创建一个新的单视图项目。 随便叫什么,但要确保启用了单元测试。 检查您的项目并删除所有样板代码。 您的ViewController应该看起来像这样:

为什么您的iPhone应用程序(和网站)必须具有错误监控系统

那么什么是错误监视系统? 您可能熟悉崩溃报告,当应用崩溃时,崩溃报告会向您发送所有详细信息,以便您快速解决问题。 好吧,错误监视非常相似。 每当您的应用中发生错误时,它都会向您发送报告,而不是向您发送崩溃报告。 重要的是,让我告诉您我的一位客户。 雇用我的对话非常迅速: 首席执行官:“我有一个使用Parse的iPhone应用程序。 自从我们迁移到Parse Server以来,Facebook登录不起作用。” 我:“好吧,我最近使用解析处理了一个应用程序,因此我可能会有所帮助。 您知道您遇到什么样的错误吗?” 首席执行官:“我们的用户遍布Facebook,App Store和Twitter,因为他们无法登录。 他们不断回到签名屏幕。” 我:“好吧,您还知道其他吗?” 首席执行官:“不是,我们的CTO几个月前就离开了,我现在有一个新的CTO,但是我希望他专注于即将发布的版本。 您认为这可能需要多长时间?” 我:“不知道。 您不知道会遇到什么样的错误,因此首先我将不得不熟悉您的代码,然后找出正在发生的事情,然后找出如何解决它……这不会很便宜。” 首席执行官:“什么时候可以开始?” 我:“明天” 首席执行官:“您被录用了……” 好的,这些不是引号,关于钱的话题也很简短,但是您知道了。 因此,第二天我参加了会议。我再次尝试从首席执行官那里获得有关该问题的更多详细信息,但是我什么也没得到。 我所获得的只是访问该应用程序所有内容的凭据(github帐户,AWS帐户,crashlytics帐户等),然后我就离开了。 我先查看应用程序的代码,看看是否发现明显的问题。 您可以听到我的时钟在后台滴答作响。 然后,由于我在iPhone应用程序中没有任何运气,我跳上服务器查看日志,看看是否有任何事情发生在我身上。 仍然没有运气,我的时钟还在滴答作响。 然后,我查看了服务器代码,更多的滴答声仍然没有运气。 在这一点上, 我在该项目上花费了大约8到10个小时,但仍未接近解决方案 。 因此,我愿意做我所有项目的第一天的工作:在应用程序中安装 Rollbar (或类似的应用程序日志记录系统),以便我们可以看到用户遇到的错误,在登录流程中尽可能多地定位并将该应用发送给他的TestFlight用户。 然后等待,看看我们又得到了什么错误。 肯定在一个小时内 ,我们又得到了一些错误,并返回了准确的错误号,该错误号是Parse Server抛出的错误。 再次 , 我们终于知道我们的用户正在经历什么 。 现在请记住,这并不意味着问题已解决,这仅意味着我们知道问题所在。 因此,CEO不得不给我大约10/15个小时的报酬, 以了解我们面临的问题 。 因为他的原始团队没有养成记录那些您不想在MVP中处理的错误的习惯,所以您可以专注于快速迭代。 我对MVP的策略如下: 创建每个人都会使用的代码 仅处理您知道会发生的错误情况并检测所有错误情况(无论大小如何) 稍后,如果我发现很多用户遇到了问题,则可以编写代码来修复它 每个错误情况的检测时间约为20秒。 如果您做数学运算,那么我花了10个小时来弄清楚问题是什么,就算是检测1800个错误…… […]

每个高级iOS开发人员都应了解的概念。

这是每个高级iOS开发人员都应该知道的概念的摘要(不是按优先顺序排列)。 阅读时,在每个标头上添加“何时使用”。 欢迎提出建议。 不同的架构模式: MVC,MVVM,清洁架构,Viper… 不同的源代码管理选项: Git,Subversion等。Github,GitLab等服务…。 不同的依赖管理器选项: Cocoapods,迦太基。 不同的数据存储选项: Coredata,领域,xml,文件,SQlite,FMDB,SQLCipher….. 编程方法的不同选择: 功能性反应式编程,面向对象的编程,面向协议的编程 框架:反应性可可,反应性Swift,RxSwift,RxCocoa… 解决方案实施中的不同选择: 原生,混合等 框架:Angualar2,ReactNative,Xamarin,Cordova….. 确保代码质量的不同选项: DI,单元测试,测试自动化,TDD,BDD,样式指南,c格式(自动样式指南) 框架:XCTest,iOS快照测试用例,KIF(iOS集成测试框架)… 确保质量的不同过程: 有效的代码审查 工具:坩埚,Atlassian储藏箱,差速器 框架:ObjcLinte,SwiftLint…。 发送推送通知的不同选项: APNS,Firebase,Urban Airship等第三方选项… 跟踪用户行为和分析的不同选项: 谷歌分析 跟踪报告和分析应用崩溃的不同选项: Crashlytics,面料…。 分发用于生产和测试的应用程序的不同选项: 企业与消费者对决(Apple Appstore),曲棍球….. 远程部署应用程序的不同选项: MobileIron,Airwatch…。 CICD的不同选项: 特拉维斯,詹金斯….. 跟踪项目的不同选项: JIRA,混血儿…….. 最初于 2017 年3月27日 发布在 nishabe.wordpress.com 上。

成为AR开发人员的荒谬

增强现实(AR)是一种相对较新的媒体,在软件和硬件行业中正获得极大的关注。 许多公司都在努力开发耳机,苹果,英特尔,谷歌,Magic Leap..etc。 许多公司还在为能够为AR建立项目的软件做一场争夺战。 作为过去一年一直深入研究AR的人,让我告诉你,这很尴尬。 也许在将来,当现实世界中对AR头戴式耳机以及更经济高效的AR头戴式耳机进行更广泛的社会适应时,这种情况可能会发生变化-但就目前而言,无处不在的AR通道当然是移动的。 通常,当我为移动设备开发时,我就像咖啡店中的所有其他人都在移动设备上悬停轻敲一样“低下头”。 但是,没有AR。 使用AR,您通常会抬起手机来体验现实世界中的数字投影。 我正在为移动商店Spillwave开发应用程序。 只是为了好玩,我将告诉您该应用程序在天王星上名为Smashed。 这是一款有趣的饮酒游戏,仅需一点点AR即可使体验引人入胜。 棘手的部分是,此应用程序使用了所谓的“水平平面检测”,以弄清楚应该将天王星“放下”的位置……呵呵……然后旋转它,并给出饮酒说明。 无论如何,荒谬的部分是,随着开发和测试的进行,人们将定期将应用程序部署到移动设备上并进行测试。 这带来了在咖啡馆走来走去,举起我的手机,扫描房间,扫描房间的体验。 我将模型放在飞机上。 然后,我在屏幕上滑动手指,仍然将它指向整个房间。 它看起来就像我在录制视频,或者至少是其他顾客的快照。 这不是我会喜欢的“关注中心”! 我从顾客和员工那里随意地脏了一下。 我希望有一天我会被护送出建筑物,甚至可能遭到口头攻击! 我等不及了 永远的AR! 重新发布于:https://solipsar.com/the-ridiculousness-of-being-an-ar-developer/

如何使用Jenkins和VSTS为iOS项目设置CI和CD?

在我们开始之前,我想告诉您对CI / CD的轻微监督(持续集成/持续交付,持续部署)。 CI的成功取决于开发团队对文化的改变。 在这样的过程中,不需要人来决定何时以及什么生产。 CI / CD系统的最后一步将自动部署成功退出交付管道的所有构建组件/程序包。 因此,这里我将向您展示如何使用TFS插件通过VSTS配置Jenkins。 使用TFS插件使将Jenkins与VSTS一起使用来创建完整的CI / CD管道非常容易。 我不会涵盖有关Jenkins的任何细节,因为我假设如果您正在阅读此书,那么您已经知道如何使用Jenkins。 如果您不熟悉CI / CD,只需使用VSTS,无需安装,即可构建Xcode项目。 如果您知道如何使用Jenkins,那么我将向您展示如何将其连接到VSTS。 您将需要以下内容 完全安装和配置的Jenkins服务器 Team Foundation Server插件 免费的Visual Studio Team Services(VSTS)帐户 个人访问令牌 通过上面的内容,我们准备配置一个项目以从存储库中提取,使用Jenkins触发并构建VSTS。 创建团队项目 创建VSTS Team项目之后,我们可以切换到Jenkins。 在Jenkins中创建一个新项目以构建代码 对于源代码管理,选择Git或您使用的任何版本控制。 在库URL中复制库URL 单击添加,然后单击凭据旁边的詹金斯下拉列表 6.输入以下内容 字段名称-值 域-全局凭据(不受限制) 种类—用户名和密码 范围-全局(詹金斯,节点,项目,所有子项目等) 用户名-[留空] 密码-[VSTS个人访问令牌] ID — VSTS 说明— VSTS 点击添加 选择“ Archive theartifacts”生成后操作来归档生成的输出 保存项目 一旦我们触发了构建,我们将返回项目,以便触发发布 使用Jenkins,我们可以配置VSTS以在每次提交时启动此构建。 从“ […]