-告诉我,你喜欢旅行吗?
我确信您会回答是,在另一种情况下您不太可能会关注本文:)
-您对移动开发主题感兴趣吗?
在这里,我不太确定,希望我不要阻止您对本文的兴趣。 无论如何,会有许多技术细节可能对您有用,但不是必需的。
我知道,我知道,霍利瓦尔,但该怎么做-我们将争辩并生出真理。
在这个令人伤心的故事中,一种或另一种方式,这些主题都会受到影响,因此,如果您还期望有其他内容,那么是时候结束本文了;)尽管,我会尽力撰写,以便不仅提供技术细节。
所以,一点背景
正如我所说,我喜欢旅行。 对我而言,它始终是您想要和等待的动力和冒险。 另外,几年前,我试图以论文的形式描述我的旅行,我很喜欢。 不是说我成为某种流行的博客作者-不,我没有这样的目标。 但是我为自己飞了-gromozeka07b9.livejournal.com ,至少是为了向我的朋友们展示。 一开始,一切都很棒-我很喜欢,回到家后,我花了几天的时间尝试以一些有趣的故事形式安排我的所有冒险经历。 但是,过了一段时间,我意识到回国之时才有时间忘记一些有趣的事情,因此我决定在旅途中记笔记。 在各种电子笔记本,便签等中 这样虽然简化了生活,但仍然不方便,结果,仍然花费大量时间将这些内容组合到故事中。 尽管存在自身的问题,但通过Telegram中的频道形式来编写故事可以使生活更加轻松。
一个想法的诞生
一开始是...披萨。 一旦我们与我的团队坐在Dodo Pizza比萨店一起,为生活说话,然后逐步讨论一家小型创业公司,该公司将帮助游客发现景点,有趣的路线,使用任务,甚至提出某种形式的货币化。 但是,在讨论过程中,我逐渐提出了另一种产品的构想-而是为旅行者提供的工具,他们既需要博客工具,也需要关注个人使用的笔记。 我很痛苦,我找到了解决问题的方法:)
结果,出现了一个概念-对于初学者来说,这是一个移动应用程序,它允许您离线创建路线,标记点,添加描述,照片,与应用程序的其他用户以及在外部与其他用户共享-到各种Livejournal,Instagram,Facebook等。 。 应该可以精确地离线工作,因为旅行并不总是在有网络的地方进行,但同时应该可以将数据同步到云中。 甚至还发明了工作名称-QuestHelper。
这是最低程序。 另外,我还有一点感兴趣。 我对移动开发感兴趣,我真的很想尝试在新平台上制作真实的产品。
实际上,所有这些想法在一个晚上和第二天我们开始工作时就会浮现在脑海。
关于团队的几句话发展在我身上。
我的妻子奥尔加(Olga)担任产品经理。
由我的儿子Klim设计。
以及顾问女儿Veronica的宝贵建议:)
为了生意!
第二天,关于申请的想法并没有离开我。 界面布局已在头部绘制,并且已看到特征。 当然,现实更加复杂。 为了制定至少一些内容,我们花了几个小时在纸上制定基本功能并可视化应用程序中的导航原理,最终将这些草稿传送到fluidui.com,以便我们可以试验应用程序的布局。 这是一个非常正确的决定,后来让我节省了很多时间-我不是很在意流畅,而是关于需要模拟界面这一事实。
布局使我可以向设计人员提出特定的任务,而无需用手指解释应用程序的功能,而只是显示所有这些都可以从中弄清楚的布局。
同时,基于Xamarin.Forms-QuestHelper的Visual Studio中诞生了一个新的解决方案。
为什么选择Xamarin? 如果有兴趣,看猫下老实说,对我自己来说,那时我没有其他选择,现在也没有。 我对Javascript的经验很少,也不想研究React Native之类的东西。 对于本机开发,情况是一样的-我是该项目中唯一的开发人员,首先研究Java,然后再用Objective-C或Swift进行埋葬,但我对此还不够。
因此,我开始研究用于移动开发的跨平台工具。
我已经对Xamarin.Android有了一点经验-我写了一个可以作为聊天工具的翻译器,结果使用起来很方便,我仍然自己使用它:
那是在2016年,当时Xamarin甚至还给了薪水,这引起了大问题,这主要是由于该项目最初只是一个介绍性项目,没有任何获利的事实。
大约在同一时期,微软购买了Xamarin并将其免费提供,至少在我的情况下如此,这使我头疼。
就像我已经说过的那样,我最初计划在Xamarin.Forms上创建一个新项目,至少是要熟悉该技术并了解其观点。 尽管如此,在多个平台上运行一个代码仍然很诱人。
如果您对Xamarin知之甚少,那么情况将是这样的:
- 有一种Xamarin.Classic(或Xamarin.Native)方法。 关键是,通过这种方法,您可以在一个项目(使用数据库,服务等)中开发通用的业务逻辑,而在单个项目中,则可以使用具有此逻辑的一个项目的本机UI。 粗略地说,在VS解决方案中,您有三个项目:
- BL(所有平台通用的业务逻辑)
- 本机Android UI
- 本机iOs UI
- Xamarin.Forms方法。 通过这种方法,您不仅具有业务逻辑,而且还具有UI的通用项目。 这对UI施加了限制,它对于不同的平台变得统一,但是允许您使用XAML中描述的相同形式。
逐字逐行 臭虫 。
因此,某种“ hello world”应用程序诞生于Xamarin.Forms上,该应用程序最初除了显示带有本地数据库中的点的地图外,什么也做不了。 逐渐地,该项目使我越来越着迷-因为这不仅是结识技术平台的机会,而且是产品实践的使用,使您可以尝试以产品所有者的身份思考。 特别是当我的团队和朋友聚在一起参加小型协作会议并尝试创建客户旅程图时,这是一种很好的体验。 我不会说一切都按我想要的方式进行,但是我对产品开发主题有很多新见解。 事实证明,人们看起来根本不像我的:)
小心,传染!
渐渐地,我的热情开始转移到了团队中。
整个家庭而不是看某些系列,而是全家聚集在厨房里并吸引了CJM,申请屏幕,考虑了获利方式并结成积压,这真是太棒了。 在这些夜晚中的一个晚上,我不记得是谁想到了这个想法-QuestHelper的名称有点无聊,而且也适合我们一开始就考虑过的任务。 改个名字吧!
但是,实践表明,它并不是那么简单。 但是,如果您提出一个口号?也许它还会使我们获得一个更适合新概念的名称?
结果, 家庭 指挥委员会从此决定了我们的口号:
这就是GoSh的诞生方式! (当我有营销人员和品牌经理的工作人员时,我一定会给他们任务,以找出GoSh中的位置!“我住”的一部分:)
然后根据“共享”图标的思想出现了徽标的一个版本:

首次实际使用
到2018年8月,我发狂 我在写屎 我正在开发可以使用GoSh的功能! 在实际情况下,前往堪察加半岛。 当时我需要的最重要的事情是能够在没有网络的情况下创建路线,标记感兴趣的地方,在这些地方添加照片和文字注释。
出发前的最后一次提交是在出发前往机场前几个小时。 那又是一个驱动器! 在实践中,我用自己的双手做了什么,这是多么快乐和满足! 在整个旅行的两个星期中,我在GoSh中记笔记! ,而且重要的是,在我看来,这非常方便。 当然,这里有一些障碍-有很多错误,并且最初的实践经验通过新功能和大量错误被添加到产品积压中。 顺便说一下,这条路线现在在GoSh中可用! -你可以自己看。
那么什么是GoSh! 这样,对您有什么用?
现在, GoSh! 是适用于Android平台的移动应用程序,可与云服务一起使用以进行数据同步。 该应用程序的主要功能是:
- 路线创建
- 路线点标记
- 在路线点添加照片,音频,文字说明
- 通过Yandex SpeechKit识别录音中的文本
- 将点从Google地图,Yandex地图导入到路线中
- 与其他GoSh用户共享路线的能力!
- 自己和通过Google授权
- 数据与云存储完全同步
仅此一项就可以使用GoSh! 用于进行旅行笔记。
而且,顺便说一句,我自从意识到自己几乎停止了仅在智能手机上拍照-我现在只能通过GoSh拍照! 与其说广告,不如说是为自己带来方便-我把车停在某个地方,在“停车”的个人路线上标记了一个点,现在我不会忘记:)或者,例如-在访问会议或会议时,我创建了一条路线,例如“敏捷的日子”-我放弃了会议上感兴趣的所有内容,文字,音频,照片。 现在它们不会丢失在其他材料中,如果需要,我将与其他用户分享。
看一次比听一百次更好应用程序下载屏幕:

使用说明的第一屏:

路线清单范例:

航点列表的示例:

路线可视化:

显示航点的示例:

那接下来呢?
我部分地解决了我的问题,但我想到也许这样的旅行便笺的想法可能对其他人来说很有趣,因此尝试弄清人们的需求将是一件很不错的事情。 正如交流所显示的,记笔记或创建路线的人并不多,这对我环境中的单位来说通常很有趣。 基本上,人们对单击照片并将其放入舒适的instagram感兴趣。
因此,基本上,积压工作现在是建立在社交事物上的,例如:
- 当然,将路线导出添加到Facebook / Instagram / VK等。
- 添加不仅可以在GoSh中查看路线的功能! 还可以通过网站上的画廊
- 向GoSh添加功能! 查找和查看其他用户发布的路线
- 添加评论和顶
- 本地化-添加英文界面
- 也许更方便的路线规划功能
现在发生了什么事?
好吧,除了我决定向您介绍有关该项目的事实外,现在我们的永久设计师(我的儿子Klim)正在Tilda上着陆,以便人们可以在不安装该应用程序的情况下展示某些东西,加上一个小的广告当然也不会受到伤害。
现在是登陆状态: 登陆GoSh!
不要严格判断,这是我们的初次体验:)
对于那些不想创建路线而只是观看的人,我计划使用相同的着陆页来查看路线,这将是一个机会。 同样在处理点的屏幕的过程中-经过几个月的实际使用,很明显它很不方便。
那么一年来我们学到了什么?
第一个。
最重要的是-必须有人来“推动”该项目。
在这种情况下,是我。 当能量从我身上喷涌而出时,没有人可以呆在角落里的家里,每个人都被迫参与进来:)当他放开我一点时,他就让所有人都离开了。 我们在这样的上升和下降时期工作。 尽管我感谢家人的帮助-确实,对于一个人来说真的很难。 我也经常遭受这样的事实的困扰:我不能花更多的时间在项目上,我没有足够的时间,尽管当我从事该项目时,我会变得很享受。 有时我早上5点起床,这样在早上8点之前(现在是主要工作时间)做一些有用的事情。 在一个有Internet的地方进行为期2周的假期-这是发布多个晚上发布的机会:)当您看到工作的结果并且没有时间延迟时,但是现在您可以使用它-它收费。
第二个。
对这一点的认识已经逐渐形成。 最初,我们对“宇宙飞船在莫斯科大剧院的扩张中发挥作用”的想法。 逐渐地,它们开始着陆,当出现最小的产品时您可以“触摸”-很明显,开发该产品有多困难。 这确实是有效的-找到市场需求,人们的痛苦,找到竞争对手,了解您与他们的差异并向听众解释... ...最后,人们至少会感兴趣地安装一个应用程序供自己观看-这是一个问题,甚至在人们的内心世界中,更不用说陌生人给自己放些东西甚至提供反馈的事实。 但是,无论如何,感谢许多这样做的朋友和亲戚,没有你,我很可能早就离开了一切。
第三。
我经常听到-“那么,您必须将MVP降到最低,并公开检查。” 我同意 一个“但是”-您需要清楚地了解,但是为什么呢,您的目标是什么? 您是否真的要发布受欢迎的产品,或者您还想要其他东西? 我的经验告诉我,至少有一年没有花在发布真实产品上,而是花在了解技术平台上。 我实现了这个目标,现在有了一种理解,那就是,考虑到实际上对人们有用的产品的开发,而不是仅对我来说有趣的功能,这将是一件很不错的事情。 总的来说,是时候不仅要考虑自己,还要考虑你需要的东西了:)
第四。
团队 需要志趣相投的人,您可以向他们学习,或者您可以自己教别人。 最后,如果一支优秀的团队-您会互相激励去做点事情。 从实际的角度来看-例如,我经常感到羞耻地看我的代码:)最初有测试,并且代码尝试或多或少地准确地编写代码,但是由于时间很紧迫,所以测试首先进行了,对代码质量的锤子开始了。 如果团队中有更多开发人员,那么这些otmazas不会起作用:)当然,对于团队来说,这些是新的想法,对解决方案的新观点。
技术细节
没有哲学,关于案件因此,C#,Visual Studio 2017,Xamarin Forms。
在罂粟工作室中,既可以在PC上(在家中)也可以在Macbook上(随时随地)进行开发。
目前,只有Android的程序集在Google Play中公开可用。 对于iPhone,我在一开始就进行了组装,但是现在我放弃了这个想法-没有时间在两个平台之间分配注意力,因为无论如何,您仍然必须调整UI,并且在某些情况下还需要使用本机控件-例如,使用卡进行操作,实际上,对于iPhone,必须做同样的事情。
我将Realm项目用作本地存储(我在Translate Helper上使用了SqlLite,我不能说不好-Realm出于好奇而不是出于实际需要)。
至于服务器。 服务器存储用户在GoSh!中工作时使用的所有路由和媒体文件。 ,这至少在原则上是必须的,以便能够共享路线。 该服务器是用.Net Core编写的,最初是在Azure中托管的,而我有BizSpark订阅,但是几个月前,该订阅终止了,由于几乎没有什么要重写的,所以我转而使用reg.ru中的linux托管。 从专家那里-大大提高了数据访问速度,从缺点-失去了使用Application Insigths的能力。 服务器上的数据库是MySQL。
还有多少路同步醉酒……现在它的第三个版本已经可以使用了,我相信还会有第四个版本,关于优化和新功能的想法已经有了。
该应用程序的性能统计信息全部归入appcenter.ms,因为它对我来说是免费的。 几乎实时地查看有关用户操作的错误和统计信息非常方便。
也许这一切都在技术上,如果有什么有趣的事情-我会告诉评论。
最后我想告诉你。
我相信这个故事还没有结束。
我喜欢我的工作,希望您也喜欢! 尽管我非常了解,但是安装该应用程序的许多人都会遇到错误,不一致以及对界面的不便之处-是的,不幸的是,所有这些都已经存在,事实上,该项目尚未爬出MVP。
朋友们,我很高兴听到您的意见,甚至是有关您旅行问题的故事,为此,我迟早会找到解决方案的:)
而且,如果您也对Google Play提出意见-是的,我会拥抱您! :)
, , — , , Xamarin. , , , , — , - !
: Facebook
UPDATE ( ):
, !
, , , , ! ! , , , , . , . , , , — , , . , , , , : -. ? "" — . "" — . — , . , — . :)