如何在一周内建立一个Shopify应用程序

在一周内构建一个Shopify应用程序:2016

在成为顾问后的几年里,我从客户那里看到了一些奇怪的开发请求。其中一个最有趣的问题来自一位客户,他想要一个100%兼容Windows的Windows XP克隆版。对了,他们的预算是200美元。

谢天谢地,这不是针对我的。

撇开笑话不谈,并不是每个奇怪的客户要求都是幻想。有些要求对我们来说听起来很奇怪,但却根植于客户的实际痛苦。

也许,只是也许,他们的组织在工作方式上是独一无二的。也许他们的疯狂想法会给他们带来巨大的价值。我们不应该忽视那些听起来“已经存在”的请求,尤其是当客户显然已经花了很多心思的时候。

我听到其他Shopify合作伙伴谈论他们收到的疯狂请求,客户想要为他们定制一个Shopify应用程序。虽然这听起来有些疯狂,但这听起来就像我平常的周二。

今天,我想解决这个问题,并向您展示创建自定义Shopify应用程序并不是那么疯狂或困难。事实上,这对你的客户来说可能是最好的选择。

把圆钉子塞进方孔里

通常情况下,客户请求自定义应用程序是因为他们试图通过改变主题来解决问题,或者使用数十个应用程序商店应用程序,但没有任何效果。

要么他们需要一些超出主题能力的东西,要么应用商店应用只提供了一个通用的解决方案,要么他们只是没有必要的技能来实现它。

有时他们的问题是如此痛苦,你可以从他们的声音和文字中听到。最近,我的一位领导向我表达了这样的想法:

“我已经尝试了所有应用程序,并将自己逼疯了,试图找到将应用程序/代码/方法结合起来以获得相同结果的方法。”

你可能还喜欢:如何为你的Shopify应用程序获得评论

当你只有一个工具时,如何构建一个Shopify应用程序

我们有时会对奇怪的要求做出条件反射的一个原因是,我们可能会被困在自己的舒适区。如果你所做的只是创建Shopify主题,这就是你要达到的解决客户问题。任何超出这个范围的要求都会给你带来紧张和困难。

对于后端开发人员、前端开发人员以及任何具备专业知识的人来说,情况也是如此。

我们的自然反应是用我们的老工具来解决客户的问题。有时我们甚至不知道有更好的工具。

软件开发不是很难吗?

但构建自定义应用程序很难,对吧?难道它们不需要一个开发团队和很长时间来构建吗?

我们都知道,至少有一个人花了几个月或几年的时间来研究他们的应用创意——一个他们计划下个月发布的应用(尽管“下个月”在过去的10个月里每个月都被重新安排……)。

对于每一个熟练的团队花费数月时间开发应用的案例来说,也存在另一个例子,即一个独立的开发者在几个晚上和周末的时间内快速构建和发布一些东西。有时,甚至在短短一周内。

你可能还喜欢:构建应用:我们在保持设计一致性和可扩展性方面学到的3件事

我用来从头开始构建Dripify的过程

我将概述我用来构建我的第一个公共Shopify应用程序的过程,Dripify。

尽管Dripify是应用商店中列出的公共应用程序,但同样的过程也可以用于为您的客户构建私人应用程序。以这个公共应用程序为例的好处是,我可以对过程中的每一步都更加开放。

当我开始使用ShopiOB欧宝娱乐APPfy时,我之前做过客户端应用程序,所以我对Shopify的api有所了解。不同之处在于,所有这些应用都是现有的应用,而我正在改进或修复一个可用的代码库。

对于dripiify,我必须从头开始。OB欧宝娱乐APP我必须创建并拥有它的每一部分,从身份验证和支付到用户界面。

最重要的是,我给自己设定了一个挑战。我会花一个星期的时间来开发Dripify,并在周五下午之前将其发布,功能完整,并准备好供商家安装。

计划阶段

在一周内建立一个Shopify应用程序:计划由于时间有限,我不想直接进入开发阶段。这很容易导致过度开发,迷失方向,使用新工具,最终出现在YouTube上,并且通常会浪费大量时间。

我需要集中精力——不仅要避免分心,还要专注于应用程序真正需要的功能。

在我计划开发周的前几天,我坐下来规划应用应该做什么(不应该做什么)。我创建了一个路地图这只是我对软件开发路线图的一个奇特的称呼。在这篇文章中,我回答了以下每个问题:

  • 这个应用的目的是什么?
  • 将包括哪些功能?
  • 构建这些特性需要多长时间?时间表是怎样的?

用我的旅行地图回答这些问题是至关重要的。在仅仅5天的发育过程中任何能够减少开发时间的方法都是有益的。

1.确定这个应用程序的目的

最重要的问题,也是你应该首先考虑的问题是,这个应用程序的目的是什么?为什么要建立它?它将如何帮助商家或您的客户?

如果这款应用是为你的客户设计的,那么回答这个问题就很容易了(不,你不能只是简单地回答“他们让我制作它”)。

你去问你的客户。

你需要确保你用后续的问题来探究他们的回答。你想要发现他们请求的潜在原因,并与应用程序背后的商业原因联系起来。你的客户端对话可能看起来像这样:

客户:我们想要一个应用程序,增加自定义折扣到这些产品。
你:为什么是这些产品?
客户:这些是我们需要清仓的。
你:你们为什么要关闭那些产品?
客户:它们卖得不好,我们需要仓库空间来建一条新产品线。
你:一旦你有了自定义折扣应用,你将如何推广它们或关注它们?
客户:嗯…它们会更便宜,所以人们会买。
你:即使有定制折扣,这些产品仍然不会在您的产品目录中被发现。为什么不举办一个限时抢购活动,并提供一些自定义定价,我们可以在一天内大力推广每一款产品?这样你就能在几天内把存货卖光。

    有时候,就像上面的例子一样,当你发现潜在的原因时,你可能会发现他们想要的和他们需要的完全不同。这种需求成为了应用的目的。

    如果你的应用不是为客户设计的,而是要在Shopify app Store上公开销售,你就需要做一些市场调查,以发现相同的需求和需求。ob欧宝娱乐app下载地址你可能需要和几十个商人交谈,或者收集他们过去写过的问题的笔记。

    无论来源是什么,都要精炼你的目的,直到你得到一些容易理解的东西。Dripify:

    “这个项目的目标是建立一个MVP版本的Shopify应用程序,允许Shopify商店轻松设置他们的Drip帐户。”

    这个目的将成为您将用于开发的过滤器。您只希望处理直接支持该目的的特性,或者那些将允许您构建这些特性的特性。其他任何事情都应该被搁置或推迟。

    2.创建特性列表

    在你确定了应用的目的之后,你需要集思广益地思考要构建哪些功能。在这个阶段,使用你能找到的所有资源写下你的每一个想法。不要限制自己或担心你的日程安排。你想要尽可能多的想法,而不是关注它们的质量。

    一旦你有了一个功能列表,并完成了头脑风暴,就该进行评估了。将每个想法与你的应用目的进行比较,只保留那些符合目的的想法。

    记住,你想要的是小而最小的东西。在第一个版本完成后,你可以随时回来扩展应用程序的功能列表。

    对于客户,我喜欢将其定义为最小的第一阶段。第一个版本不会是完美的,但它会给客户带来一些价值,让他们现在就使用它,而不是在六个月内使用整个东西。每次我这样做的时候,客户都会意识到他们的许多“必须具备”的功能被推到了第二阶段,实际上并不是需要的。

    3.缩短时间表

    计划的下一步是总结每个特征,并为每个特征创建一个粗略的估计。如果您对构建某个功能的能力没有信心,或者您担心其他事情,请确保您的估算反映了这一点。

    我喜欢做的是提供一个我很可能在的范围内的估计。我还包括了一个自信百分比来表达我的感受。例如:

    • 特性:一到两天,90%的信心意味着这很可能需要一到两天的时间来发展。
    • 功能B:一到七天,50%的信心意味着可能很容易(一天),但也可能遇到困难(七天)。而且很有可能需要超过7天的时间。

    根据Dripify的计划,我能够删减功能并将开发总时间控制在3.75-4.75天,这完全符合我一周的开发预算。一定要制定一个时间表,让自己走上正轨。一个谷歌日历扩展可以帮助你把日历变成一个项目管理工具,以确保你在最后期限前完成任务。

    4.使用别人的工具

    完成Trail Map后,我就可以开始开发了。OB欧宝娱乐APP

    周一早上,我启动了我的开发环境,打开了一个OB欧宝娱乐APP空白的代码文件,然后开始尽可能快地输入……

    事实上,没有。我没有。

    由于时间有限,我不想从头开始编写所有内容。相反,我开始寻找一些现OB欧宝娱乐APP成的工具和库来加快速度。

    Shopify本身提供了许多集成库,由于我使用Ruby on Rails进行开发,因此我能够利用它们的强大功能shopify_app图书馆。该库与Ruby on Rails集成,为您提供应用程序框架,并为您处理了许多集成。

    在开始开发之前,甚至早OB欧宝娱乐APP在计划阶段,尝试将一些工具和资源集中在一起,以进一步减少工作量。不要将你的开发工作流程规划为使用未知的库,相反,如果它们成功了,就把它们看作是不错的奖励。

    你可能还喜欢:合作:整合应用如何扩大用户基础

    开发阶段

    1.设置应用程序身份验证

    有了一些现成的工具,我就可以开始开发了。OB欧宝娱乐APP

    所有应用开发者需要做的第一件事就是整合Shopify的认证和授权系统。的shopify_app库可以帮助解决这个问题,但是您仍然需要做相当多的配置和测试。

    Shopify使用两种方法进行身份验证/授权:

    • OAuth或
    • 私有应用API密钥和密码

    OAuth被所有公共应用程序商店应用程序使用,并为商家提供了一种安全可靠的方式来授权您的应用程序与Shopify,而无需将您的应用程序的用户名和密码提供给他们的商店。

    另一方面,每个商店都有能力创建私人应用程序,其中包括API密钥和密码。这些应用程序使用API密钥和密码,就像使用API的普通用户名和密码一样,并且可以完全访问它们来自的商店。

    由于Dripify将是一个公共应用程序,我不得不使用更复杂的OAuth。即使有shopify_app帮助Shopify提供的所有文档,使正确的身份验证工作可能是一件苦差事。

    但是不要放弃让身份验证工作。尽管这是实际开发的第一步,但也是最困难的一步之一。一旦你弄清楚了,剩下的开发就(相对)容易了。

    如果你遇到了问题,可以在Shopify论坛上搜索并提问。通常,身份验证问题只需要一个简单的修复。

    2.不要创建私人应用

    如果你正在为客户端构建应用程序,你可能会想要创建一个私有应用程序。你可以跳过OAuth,你的应用程序将能够立即进行身份验证。

    出于几个原因,我不赞成这样做。虽然它很容易设置,但你的应用程序将受到限制:

    • 你不能把它嵌入到Shopify管理面板中
    • 为了与多个商店共享应用程序,你必须自己创建所有代码或托管应用程序的多个副本
    • 该应用程序对商店有完全的读写权限,这可能是一个很大的风险

    我建议你使用OAuth,创建一个应用程序,就像它是一个公共应用商店应用程序一样,但不要列出它。我称这些应用为未上市应用。

    然后,您的客户端可以像安装其他应用程序一样安装应用程序。

    为了一些额外的保护,在应用安装过程中,你可以检查商店的url,如果它不是你的客户的url之一,你可以拒绝安装过程。为shopify_app,将下面的代码放入你的sessions_controller.rb

    虽然考虑使用哪种身份验证模式很重要,但不必过于担心。稍后你可以在OAuth和Private app authentication之间切换。您需要迁移数据并进行一些谨慎的配置更改才能使其正常工作,但这并非不可能。

    说到url,了解更多关于规范的URL是,以及为什么它们如此重要。

    3.让OAuth工作

    在一周内建立一个Shopify应用程序:誓言在使用OAuth时,需要正确配置的一个配置是作用域。作用域是Shopify用来允许你访问特定api的。例如,如果您需要处理订单,那么您将需要read_orders范围。要添加新客户,这两个都需要read_customerswrite_customers范围。

    如果您没有选择正确的作用域,那么在稍后尝试访问它们时就会遇到问题。找出API不能工作的原因并不有趣,特别是当您几天(或几周)前忘记为它添加作用域时。

    有了Dripify,我知道我只需要访问两个示波器就可以为我的客户安装Drip。一个作用域用于读取主题模板,另一个作用域用于返回这些模板。

    一旦我的OAuth配置设置好并开始工作,我就可以着手实际的应用功能了。

    4.谁需要用户帐户?

    在Trail Map中,我计划为商店添加用户帐户和管理它们的方法。这样,商家就可以让他们团队中的任何人访问Dripify。

    在与OAuth合作之后,我意识到这个功能根本不会为商家增加价值。

    OAuth阻止未经授权的用户访问应用程序。商店用户必须在访问应用程序之前访问Shopify管理员,这意味着他们已经在Shopify中拥有有效帐户。因为我并不关心是哪个用户将Drip代码片段安装到商店中,所以没有必要将不同的用户帐户分开。

    最后,我完全去掉了用户功能。这不仅为我节省了大约半天的开发时间,还减少了商家在应用中必须做的管理工作。现在,应用的用户界面可以专注于安装Drip片段。

    专家提示:即使开发已经开始,如果能做出更好的应用,也要乐于改变OB欧宝娱乐APP你的计划。比起添加新功能,你更应该专注于删减功能。

    5.与Drip API集成

    有了这个新的重点,我知道我需要使代码片段安装简单。幸运的是,安装Drip是一个简单的过程(它只是你添加到每个页面的一段JavaScript,类似于Google Analytics),尽管我确实需要在代码片段中包含Drip帐户ID。

    我可以让商家登录到Drip,找到他们的账户ID,并让他们复制到Dripify。这样就行了,我的工作也就简单了。

    但这样做可能会出很多问题。此外,要求商家登录到另一个网站并手动复制数据并不友好。请记住,这款应用的目的是让用户“轻松设置他们的Drip账户”。

    我决定坚持我的计划,尽量自动完成它。

    与Shopify一样,Drip也使用OAuth来允许应用程序访问帐户信息。这意味着我可以设置Drip的OAuth,并访问我需要的商家。

    不过还是有一些问题。

    你可能还喜欢:Shopify App命令行工具:更快地构建应用程序

    6.新api带来的麻烦

    首先,因为我已经在Shopify上使用了OAuth,所以我需要将两者整合起来,这样它们才能共存。对于像OAuth这样复杂的东西,这是一个技术挑战。

    幸运的是图书馆shopify_appOAuth的用法允许配置多个OAuth提供商,所以我可以在同一个应用程序中同时使用Shopify和Drip。有一些地方它们会交叉,我必须仔细跟踪每一个,但大多数情况下它们都很好地发挥作用。

    第二个问题是,Drip的OAuth太新了,我没有现成的库可以下载和使用——我必须自己编写。

    编写一个新的低级库并不是我真正想做的事情。当这样的技术问题发生时,就会有重大进度影响的风险。这段代码并没有直接为我的用户增加价值,它只支持更高级的功能。我在这里的任何时间,都不会直接给商家增加价值。

    值得庆幸的是,还有许多其他OAuth集成的例子可以作为我的灵感来源。通过其中一个集成,我只修改了一小部分代码,就可以开始与Drip一起工作了。OB欧宝娱乐APP

    我现在成功地连接到Drip。

    不过,我的兴奋只持续了几分钟。

    与Drip集成的全部要点是为商家自动获取账户ID。当时,Drip的API还很新,他们没有任何API方法来获取账户信息。

    为了不被困住,我联系了Drip的联合创始人,问他我能做些什么。几个小时后,他回复了一个全新的账户API,我可以使用。成功!

    在这一切之后,我能够验证我的商家与Drip,并获得我需要的片段的帐户数据。

    在一周内建立一个Shopify应用程序:dripiify尽管我花了很多时间,但我仍然有一个备用选择:最坏的情况是,我可以让商家登录Drip并为我复制他们的账户ID。这并不理想,也会损害应用,但我仍然能够为商家提供一些价值。

    专家提示:当你在开发一款应用时,不要被突然出现的问题所蒙蔽。试着给自己一个退路,变通的办法,或者其他解决问题的方法。通常进行任何开发的方法都不止一种。

    7.降低风险特性的风险

    在完成了Drip身份验证和帐户信息之后,剩下的就是将其添加到代码片段中,并将代码片段安装到主题中。

    这就引出了应用程序的第二个风险部分。

    由于Drip需要安装到每个页面,这意味着我必须将代码片段放入layout.liquid文件。这个文件几乎被Shopify商店的每个页面使用。

    这意味着为了自动安装Drip,应用程序必须自动更新模板文件,而不会破坏网站上的所有内容。

    我知道我可以做三件事来降低风险:

    1. 在更改任何内容之前,应用程序会对模板进行备份,以防需要恢复
    2. 围绕这个替换代码的一系列单元测试将确保它可以在许多不同的主题下工作
    3. 围绕其他故障案例进行一些手动测试,可以让我发现并处理任何其他问题

    最后,在进行了几十次自动和手动测试之后,我确信代码片段安装可以正常工作。我发现的唯一失败案例是多次安装代码片段,除了在网页中添加了一些额外的字节之外,没有任何影响。

    通过围绕这个高风险特性进行自动化测试,我可以确保它在将来继续工作。

    一个星期够吗?

    随着代码片段的安装工作,我在周四下午2:44完成了开发。这给了我一整天的时间来测试产品版本,并进行另一次详尽的代码审查。

    从开始到结束,第一版Dripify的开发和部署花费了25.5个小时。这包括所有的开发、自动测试、手动测试、设置生产服务器以及正式启动它。

    虽然我并未将其算作一周开发的一部分,但在接下来的几周中我又花了6个小时去准备并将《Dripify》推向应用商店。其中大部分用于编写销售文案、营销材料,以及与Shopify的应用团队合作,以获得dripiify的批准。ob欧宝娱乐app下载地址

    在一周内创建Shopify应用程序的经验教训

    在整个故事中,我试图阐述一些重要的观点,但现在我想重述一下,使教训更清楚。

    Shopify应用程序开发只是另一种可学习的技能。如果你有开发经验,或者可以使用它,构建一个Shopify应用程序并不是那么困难。就像任何软件开发项目一样,Shopify应用程序开发也有其难点,但这并不是你需要学习的全新技能。如果你可以开发一个web应用程序并使用REST api,你可以构建一个Shopify应用程序。

    建立一个小的,专注的Shopify应用程序可以花很少的时间。如果你的客户需要定制应用,你也可以与他们密切合作。根据他们的需要,你甚至可能会发现你可以在比我用dripiify更短的时间内创建他们需要的东西。我之前在两小时内创建并测试了一个简单的私人Shopify应用程序。

    深入了解商家的实际需求。W无论你是为客户还是为应用商店开发产品,花点时间去发现商家真正需要的是什么。不仅仅是表面的需求,而是实际的业务需求。你在这方面做得越好,你的应用就越有可能成功。

    制定一个计划,然后尽可能地削减开支。O一旦你发现了需求,花点时间计划一下你将如何满足它们。列出一个功能列表,并对其进行评估。尽量删除或减少它们,同时仍能解决应用的核心问题。

    给自己选择计划中有风险的部分,这样你就不会陷入困境。对于计划中任何有风险或高度不确定的部分,如果你的计划不完全像你想象的那样进行,你可以集思广益,想出一些你可以如何改变的想法。知道你可以在必要时回到这些方法,这将使你能够灵活地处理可能出现的开发问题。

    如果你能更好地为用户服务,不要害怕改变你的计划。同样地,你也要准备好彻底抛弃那些不能让你更接近应用最终目标的部分。这可能意味着像我一样放弃一些功能,或者改变一个核心工作流程,让用户更容易使用。

    记住你的目的

    最重要的是,始终牢记最终用户。Shopify应用程序是有目的的,通常以某种方式使商家受益为中心。如果你能感同身受,总是站在他们的角度看你的应用,你的应用就会更受欢迎。

    为Shopify商家构建应用程序

    无论您是想为Shopify App Store构建应用程序,提供私人应用程序开发服务,还是正在寻找增加用户基础的方法,Shopify合作伙伴计划都将为您的成功奠定基础。免费加入并访问教育资源、开发人员预览环境和经常性收入分享机会。

    报名

    借助Shopify合作伙伴计划发展您的业务

    了解更多