Tag: Indiedev

SQLPro —年度回顾2017

我看到其他一些开发人员在评论中发表了一年的评论,发现它们很有趣。 以下是有关SQLPro的运行情况的一些统计信息。 收入 2017年是有记录以来最好的一年,网站销售领先。 网站 在2017年的大部分时间里,SQLPro一直在使用Fastspring作为其销售提供商。一些产品由于具有一些有趣的功能,已经过渡到Paddle。 Fastspring和Paddle都使在线销售产品变得非常容易。 Setapp SQLPro Studio于2017年3月加入Setapp。收入逐月增加,并且IMO没有从其他来源获得任何收入。 Setapp通过两种方式提供收入。 首先是应用使用情况,这是SQLPro大部分收入的产生方式。 其次是推荐收入(我很自豪地获得了一笔注册收入)。 如果您有兴趣尝试Setapp,请尝试一下我的推荐。 https://go.setapp.com/stp146 Windows App Store 我在2016年末,2017年初将脚趾浸入Windows应用程序商店。这些图表中的数字非常小,因此没有包含在内。 就是说,Windows平台是我开始开发的地方,我一直对观察它的发展一直很感兴趣。 将来会有更多SQLPro产品投放Windows。 的iOS SQLPro产品最近已在iOS上发布。 作为台式机开发人员,我很难集中精力开发基于较小触摸的UI。 幸运的是,应用程序中的大多数核心逻辑在iOS和macOS之间共享。 这使我可以花更多时间专注于UI。 我相信SQLPro即将成为iOS上最好的数据库客户端之一。 结论 许多人说macOS独立开发人员无法做到这一点,iOS是前进的道路。 我还不能完全谈谈iOS市场,但是我可以说,有了合适的产品,macOS仍然可以成为成功的平台。 谢谢阅读!

嘿,Siri,我的下一趟电车是几点?

自WWDC以来已经过去了两个星期,我们中的许多人都在尝试iOS 12的新API。到目前为止,对我来说最有趣的是Siri Shortcuts 。 通过快捷方式,您可以使用新的Siri Intents API将应用程序的主要操作公开给Siri。 在本文中,我将向您展示如何为我的应用《电车时代》实现它。 意图定义文件 输入意图的标题和描述。 您可以在此处决定是否要让用户确认意图(对订单有用)。 定义要在意图中使用的参数 。 在这里,我选择了工作站的自定义模型类型。 这是用户要查看其电车时刻的车站。 如果您有多个参数,则可以定义以下支持的组合。 然后,您可以定义意图的标题和副标题 ; 当Siri建议您使用快捷方式时,这些信息将显示给用户。 如果您的操作可以在后台运行,则需要选中“支持后台执行”选项。 定义了意图之后,您需要在Target成员资格中选择选项,以使Xcode为您生成您的意图类。 现在,您可以在设置的Siri&Search页面中为此快捷方式添加自定义短语。 在iOS12 beta 1中,它似乎对我不起作用; 我必须等待beta 2才能保存快捷方式短语。 用户遵循您的快捷方式后,您将需要在应用程序委托中对其进行处理。 在第一部分中,我向您展示了如何使用新的Siri Intents API。 在下一篇文章中,我将展示如何使用Intent Extensions和Custom Intent Responses来以Siri内联方式响应用户。 在这里查看我的完整实现: 小熊90 / TFGMLive 通过在GitHub上创建一个帐户为TFGMLive开发做出贡献。 github.com 我仍将继续进行整理,并使用Siri表盘进行更多工作。 谢谢阅读! 如果您受到启发,这里有一些有用的链接,可帮助您在遇到困难时提供帮助: Siri快捷方式简介– WWDC 2018 –视频– Apple Developer Siri快捷方式是iOS 12中的一项强大新功能,可让您的应用向Siri公开其功能。 这个… developer.apple.com 通过快捷方式加速应用程序交互 […]

WeatherKit

在我的App Store中,有很多天气应用程序可供选择,WeatherKit是完美的选择。 App Store上有很多气象应用程序,我很难安顿下来,只选择其中一个。 它们每个都有不同水平的功能,准确性和外观,以至于在使用WeatherKit之前,我大约有3种天气应用程序可以满足我的需求。 几个月前,我第一次听说WeatherKit(以前称为Aerium),并虔诚地使用了他们的TestFlight beta,但现在该应用程序已经发布,我想我会分享自己的想法。 乍一看 启动应用程序时,您会以清晰易懂的方式呈现给您的天气感到满意,其中的背景渐变非常好,并且四舍五入时,在温度下方标明了风趣。 乍一看,它看起来很简单(这是我喜欢的事情之一); 但是您可能会从其他应用程序(例如Dark Sky)中获取大量额外数据,可以通过在预报卡上滑动来细读它们,以显示空气质量指数,降水几率,风速,湿度和RealFeel温度。 将这些数据置于预测之下意味着,如果您只是打开应用程序以仅查看预测,则不会被大量难以检查的数据所蒙蔽,并且您是否确实希望查看其他数据, 您可以。 可以在最左侧的页面上访问一览表。 如果使用的是免费版本,则一目了然,但如果您使用的是Pro版本,则可以有10个位置。 我没有任何设置,但是,如果您点击位置卡一览表,它将带您返回到该特定位置的预测页面。 雨警 Rain Alert是WeatherKit的杰出功能之一。 尽管许多应用程序都具有类似的功能,但是“雨警报”会提醒您在即将发生的前一天降雨,而例如“暗夜”的15分钟。 我真的很喜欢,在前一天使用它会更有用,因为它可以让您使用Rain Alert中的信息来更改计划,而15分钟之前就太晚了。 WeatherKit专业版 WeatherKit Pro是一个可选的附加功能,与您购买其他应用程序相比,它为您提供了真正值得的可选附加功能。 升级到专业版后,您可以一目了然地解锁10个城市,详细的天气预报,空气质量指数,五天天气预报以及所有其他即将推出的专业功能,此外,WeatherKit团队还致力于为每十个付费用户种植一棵树它得到了。 在为WeatherKit pro付费方面,开发团队为您提供了很多选择-您可以通过订阅付费,而对于那些想要自己付费的人可以这样做。 开发人员在/ r / weatherkit subreddit上也非常活跃,他们可以共享进度并且用户可以建议新功能。 它们对WeatherKit的未来也非常​​开放和透明,对此我们表示赞赏,并且很高兴看到它的发展。 未来 我真的很喜欢使用这个应用程序-从它的美观,显示信息的方式到它提供的数据,但我希望将来有两件事: 预测页面上的渐变屏幕可用于显示特定位置或动画天气的半透明图像,如股票iOS应用程序所做的那样 对Rain Alert的细粒度控制-例如在前一天和前一天的多个提醒 适用于iPad的应用程序,可充分利用12.9 iPad Pro的房地产直至iPad Mini 总体而言,此应用程序没有缺陷-对我来说这是理想之选,并且具有完美的组合和大量信息。 它看起来很漂亮,并且快速流畅。 我期待WeatherKit在未来发生变化。 这是WeatherKit的链接-即使您只是想要一个简单的日常气象应用程序或诸如Dark Sky之类的高级工具,也必须尝试一下。 https://itunes.apple.com/us/app/aerium-weather-forecasts/id1076414499?mt=8

2018年1月和2018年2月iOS独立开发思考和更新

嗨,朋友们, 简直无法相信一月和二月来了又快。 希望您今年有个开门红。 我想回顾一下过去两个工作量 一月份发生了很多事情。 Daily Vibes可在Apple App Store中获得。 如果尚未下载,请试一试 为Beta测试人员添加了一份注册表: 制作和编辑并上传视频 改善上述截图 改善上述视频 在撰写本文时,所有这些想法都浮出水面。 我希望将它们与下一个版本一起发布,希望在下周的某个时候发布。 然后,我将不得不等待,看看分析。 单个应用程序需要大量工作。 我开始欣赏独立开发者及其成功的产品。 您确实需要戴上能成功开展业务的所有帽子comfortable。 对我来说,营销是一个未知领域,我很犹豫开始学习它。 但是现在来看我,我可以制作图标,促销视频,并开始对增长具有战略意义 。 这是我享受的旅程,但充满挑战。 那是什么呢? 刚开始 。 今天就开始做一件小事。 并做到每一件事。 单。 天。 并且不要忘记这些小小的胜利是累积的。 我也铺平了道路,并做了所有必要的书面工作以添加应用程序订阅。 现在我要弄清楚我在这方面的策略😉 哦,在结束语中,我想保持一个宽松的2周出货周期……到目前为止,我一直坚持定期更新的时间表=)我希望我能保持这一水平! 感谢您的阅读,直到下次我的朋友。 真诚的 亚历克斯

探索服务器端Swift

当Apple开源Swift时,许多人都为在其他平台上使用这种有趣的新语言而感到非常兴奋。 早期,Swift被移植到Linux,人们开始考虑使用Swift构建服务器。 最近,随着IBM在新的Server API项目中扮演了重要角色,与IBM的现有合作伙伴关系日益加深。 作为ustwo的iOS开发人员,我决定带出服务器端Swift在Linux上试一试。 为了探索在Linux和Swift Package Manager上编写Swift的方法,我决定创建一个名为Mockingbird的小样本。 Mockingbird是模拟服务器的开端,该服务器采用Swagger规范并存入定义的各种端点。 我之所以选择使用IBM的Kitura框架是因为他们与Apple的关系,并且因为它们本身提供了云平台即服务,但是还有许多值得考虑的替代方案(Perfect,Vapor和Zewo仅举几例)。 为什么用Swift编写服务器? 除了对Swift语言的好奇心或强烈的偏好之外,为什么还要使用Swift构建服务器? 我想到了一些原因,但是最终您需要确定它们是否在您的上下文中有意义。 除了iOS或macOS应用程序(将来可能还会有Android和Windows!)之外,用Swift编写服务器还可以使两者共享代码和框架。 在维护方面,只需要编写一次代码就可以节省短期和长期的时间。 它还减少了测试方面的开销。 所有这些对独立开发者特别有吸引力,但对大型企业也可能有利。 与任何语言一样,Swift都是自以为是的,旨在以特定方式解决某些问题。 例如,Swift支持静态类型。 Swift也更喜欢简短,表达力强的代码,而不是冗长的代码。 恰恰相反,并不是说Swift在这些方面比其他语言要好。 每种语言都是一种工具,并且有自己的位置。 但是,如果这些东西吸引您,您可能会对使用Swift感兴趣。 另外,如果您打算在iOS,tvOS或watchOS上运行,则具有第一方支持和框架的语言选择将受到限制。 最近,Apple的重点肯定是Swift,而不是Objective-C或其他语言。 使用Swift构建Linux服务器 使用Kitura和IBM开发的各种相关软件包来构建Mockingbird,使其非常容易启动并将基本逻辑绑定到HTTP服务器。 编写的大部分代码用于文件管理和解析。 只需很少的代码即可构建服务器本身。 我在开发此微型服务器时遇到的最大挑战分为两类。 首先,Apple维护其Foundation框架的两个版本,这是大多数Apple开发人员使用的关键框架之一。 Darwin上的Foundation框架(即macOS,iOS等)和Linux上的Foundation框架是不同的实现。 换句话说,当您为它们提供相同的输入而获得不同的结果时,这些实现并不总是产生相同的输出。 这些实现也不完全与API兼容。 其次,Kitura在可测试性方面还有很多需要改进的地方。 在很多情况下,我都会在macOS上完美构建该软件包,但发现我启动Docker容器时,它耗尽了运行测试或启动服务器的能力。 在整个代码中,您会看到一些片段,在这些片段中,我不得不提供条件编译块,例如: #if os(Linux) 让regexObj =尝试吗? RegularExpression(模式:Endpoint.kituraPathRegexString,选项:[]) #其他 让regexObj =尝试吗? NSRegularExpression(模式:Endpoint.kituraPathRegexString) #万一 虽然我在小型实现中并不经常遇到它,但苹果的swift-corelibs-foundation(Foundation的开源版本)仍然有很多部分尚未实现(在存储库中搜索NSUnimplemented() )。 对于在Linux上使用Swift的任何人,我强烈建议您为该存储库加注星标,因为您可能需要参考已实现的内容以及在Linux和macOS上已实现的不同内容。 对于我的Kitura实施,这也是非平凡的写作测试。 由于无法对路由器的elements属性进行内部作用域确定,并且也没有可公开访问的迭代器(甚至是只读的),因此无法遍历服务器定义的API端点。 Kitura也不提供删除所有端点测试所共有的样板的测试框架(有关如何执行此操作的良好示例,请参阅ProcedureKit)。 因此,我在EndpointTests.swift编写了自己的简化版本,以简化测试。 使用Swift包管理器 […]

Unity:处理来自多个源(控制器,键盘等)的输入

喜欢这个职位吗? 您可能会喜欢 BentoBlox 也可以-在 App Store 上查看游戏 。 本周,我将为一款旨在在多个平台上运行的游戏制作原型。 核心挑战之一是预期和处理来自各种不同来源的用户输入。 我的初始方法依赖于Observer-Subscriber模型:单例UserInputDeviceManager存储对当前连接的输入设备(控制器,键盘等)的引用,并在Update上轮询该设备的按钮,以确定是否有任何按钮位于按下状态: 公共类UserInputDeviceManager:Singleton {public UserInputDevice currentUserInputDevice; 公共UserInputDevice []支持的UserInputDevices =新的UserInputDevice [] { 新的XBoxOneController(), 新的PS3Controller(), 新的DualShock4Controller(), 新的KeyboardController() }; 重写受保护的void Awake() {base.Awake(); SetupCurrentUserInputDevice(); }私人无效SetupCurrentUserInputDevice() { currentUserInputDevice = System.Array.Find(supportedUserInputDevices,m => m.IsConnected()); } void Update() { currentUserInputDevice.PollButtons(); }} 在PollButtons ,每个UserInputDevice广播处于按下状态的任何按钮的事件: 公共无效PollButtons() { ArrayList按钮= new ArrayList(); button.Add(JumpButton); button.Add(ConfirmButton); button.Add(PauseButton); button.Add(DPad.LeftButton); button.Add(DPad.RightButton); button.Add(DPad.TopButton); […]