2274.US BLACK打印

自1989年以来,没有人能做得更好 应用 创建应用并提交版本 上传版本 编辑App Store详细信息 管理促销代码和促销艺术 管理TestFlight构建 管理TestFlight测试人员 查看崩溃日志 编辑应用定价和可用性 管理iAd 创建应用内购买 提交应用内购买 编辑应用内购买 管理游戏中心 管理排行榜分数 查看应用分析 查看销售和趋势(所有报告和主要内容) 提供者: 管理用户和角色 管理应用程序访问 管理沙盒测试器 管理协议,税收和银行业务 签署协议 查看付款和财务报告 目录报告 实时按需协作

从概念到发布🚀:我如何在卧室中构建SpareDesk并将其发布到全世界。

独奏企业家面临的最大问题之一实际上是推出一些东西。 我们有很多很棒的想法,有时还有更多的半成品项目和废弃的GitHub存储库。 我对此一直感到内gui。 从我12岁起就开始编程,尽管这些年来我已经完成了许多客户项目,但从概念到发布,我始终没有想到自己的想法。 我从没想过要当程序员,也没有兴趣自己做,但是我从来没有那样做。 相反,我只是构建了“无用的”项目,所以我可以学习。 经过近一年的工作,今天,我们推出了SpareDesk,这是一个面向企业家,自由职业者和数字游牧民族的全球市场,可以立即找到工作和预订的空间,从而使他们能够继续做自己最擅长的事情。 尽管SpareDesk并不是第一个尝试成为“随需应变的桌面空间”的家喻户晓的产品,但我相信我们在与全球共享办公空间合作以及创造卓越的用户体验方面对细节的关注使我们处于占据优势的良好位置这个市场。 这个概念: 我在2015年初注册了sparedesk.co域名。最初的概念是目录样式的网站,您可以在其中搜索附近的地点。 共享工作空间需要支付订阅费以列出其空间,从而从中获利。 实际上,我为此构建了一些原型,尽管我对经营这种业务并没有感到兴奋,最终我再也没有继续做下去。 SpareDesk被我其他遗弃的想法搁置了。 2015年5月,我和一个朋友周末从伦敦去柏林。 当时,我刚刚启动了SpareDesk的iOS版本(现在是iOS版)的早期版本(我当时写的笑声就像我告诉他的那样,这将是一个快速的项目,并将在几周内完成) 。 几年前,我自学了Objective-C,并且需要一个项目来帮助我深入Swift的世界。 我们在四处寻找工作的地方徘徊,在我们的脑海中回想着如果有SpareDesk帮助我们在某个地方找到工作将会有多大。 我们最终使用了另一个提供众包空间数据库的应用程序。 不幸的是,我们去的第一个地方已经关闭(尽管此应用程序说它是打开的),而第二个地方已经关闭并在几个月前搬家了。 从浪费了几个小时,到出现了这些痛点,我巩固了现在SpareDesk的概念。

使用Ruby进行iOS开发

从RubyCocoa到MacRuby Hisakuni Fujimoto于2001年开始开发RubyCocoa框架,这使使用Ruby创建基于Mac OS的基于Cocoa的本机应用程序成为可能。 Cocoa是Apple的API,用于在macOS上构建应用程序。 它发展很快,几年后,苹果开发人员Laurent Sansonetti加入了提交者。 苹果在2008年宣布MacRuby将很快发布,并将取代RubyCocoa。 有趣的是MacRuby是开源的,这对Apple来说是罕见的。 2008年3月,第一个版本发布。 MacRuby使用Ruby 1.9和LLVM编译器(用C ++编写的编译器)和受支持的Interface Builder(XCode)。 开发过程一直持续到2012年,直到苹果对此失去兴趣,洛朗·桑松内蒂(Laurent Sansonetti)离开了公司。 RubyMotion 劳伦(Laurent)离开苹果后,他创立了自己的创业公司RubyMotion。 RubyMotion是一组用于在Ruby中进行iOS开发的组件,其中对象模型是使用Objective-C运行时(运行时在编译器中用来实现语言中内置的函数的库)来实现的 ,因此在创建类,对象或对象时一个方法,您正在使用Objective-C对象,类或方法的相同运行时实现。 因此,您无需使用任何中间件就可以访问整个iOS API。 最后,设备采用了Objective-C和Ruby运行时,其中Ruby实现运行时是静态链接的,大约为1Mb。 它包含所有现有的类,例如String,Aray,Hash等,并且还实现了Objective-C中不存在的所有Ruby功能,例如mixin(模型)或将实例变量动态设置为Class。 RubyMotion还具有静态编译器,可将Ruby立即编译为优化的机器代码。 咱们试试吧! RubyMotion项目基于Rakefile。 “ app”目录包含应用程序代码。 “资源”目录将包含项目的资源文件,例如图标,图像或声音文件。 “ spec”目录包含规范/测试文件。 让我们尝试一下RubyMotion提供的示例之一-TicTacToe。 …而且有效! 链接 RubyCocoa,MacRuby,RubyMotion 与Laurent Sansonetti一起了解RubyMotion – SitePoint 直到去年4月,Laurent Sansonetti凭借RubyMotion吸引了整个Ruby社区的想像力…… www.sitepoint.com

初级iOS开发人员

一周前,我加入了Bookmate iOS团队。 简而言之,这是一个非常愉快的一周。 这就是为什么我会告诉你的。 第一天 第一天有点特别。 我真的很紧张,因为这是我的第一份正式工作。 我来得比预期的要早。 首先,好的HR Karina向我展示了整个办公室,并且收到了一本不错的Macbook。 我遇到了我的所有队友Artem和Konstantin。 是的,团队规模很小🙂我们通常在露天场所的一张桌子上工作。 我在工作中所做的第一件事是建立工作环境。 那是很普通的事情:我连接到闲暇,公司电子邮件和其他东西。 然后Artem建议我安装SourceTree。 它实际上是一个很酷的工具。 真的很有用。 在那之前,我是命令行的狂热者,因为它使您看起来像是专业人士;)几天后,我意识到便利已胜过冷静🙂现在,SourceTree在我的必备工具列表中。 我们还使用Jira。 谢谢,Atlassian。 我以前没有使用过相同类型的软件,我的意思是错误跟踪软件。 因此,我无法将其与其他工具进行比较。 也许只是在Facebook上进行简单对话即可:)因此,Jira更加方便😀 我还想提到我不是git的大师。 只需提交推送,提交推送,提交推送-我就是git。 所以首先,我真的很担心我在git中可能会犯的错误。 如果我删除必不可少的内容怎么办? 强行推? 我真的需要这样做吗? 听起来很危险;)变基了吗? WTF ?! 我需要提及的是,我真的很想加入Junior的队伍。 我可以随时问愚蠢的问题-无论我想要什么。 我很确定它将提高我的学习速度。 这就是为什么我问几乎所有问题时都​​会有点烦恼的原因:)但是,伙计们,我还很初级!:DI可以,我会的! 如果我是中级开发人员,我会在Google上搜索所有内容,并花更多的时间。 因此,不要害怕以低级的身份加入一个团队—能够惹恼人们很有趣:) 任务呢? 我已经用水龙头修复了一个小虫子。 我只走了几行:)但是,无论如何,我还是被要求在这些行中进行更改:)他妈的空格人🙂我没有安装SwiftLint。 所以我错过了几个空格:)但是拉请求被接受了! 下一项任务是一个很大的任务。 这是一个非常酷的任务。 我更喜欢复杂的任务,因为我相信它们确实可以提高我的技能。 任务是为无法使用的书籍开发自己的小部件。 不幸的是,我第一天还没有完成。 但是今天,您可以下载Bookmate应用,并在不可用的书本视图中查看我的小部件! 我在队友面前离开办公室感到不舒服,所以我也只有在他们回家后才离开。 在第一天,我什至没有喝一杯水,因为我完全专注于任务。 第二天及以后 我会做尽可能多的任务。 这是我成长为iOS开发人员的方式:)我真的希望很快成为这一领域的专家。 第一周我关闭了大约10个问题。 我曾与我们的设计师讨论过3次有关应用程序的详细信息。 […]

我如何在iOS上发现Instagram即将推出的视频通话功能

昨天,我设法在Instagram上获取了一些视频通话UI的屏幕截图。 这就是那件事的故事。 我认为该过程的描述对于对逆向工程感兴趣以发现隐藏特征的人将非常有用。 它总是始于谣言或其他发现。 昨天,我们在9to5mac上发布了一个故事,讲述某人在Instagram的Android应用中发现了与进行视频通话相关的资产,而该功能是Instagram目前不提供的功能。 那吸引了我的注意力,我想知道是否可以在iOS上找到相同的东西。 注意:9to5mac帖子中嵌入了我由以下所述过程引起的有关iOS功能的推文,请记住,它最初是针对Android的谣言。 我做的第一件事是使用iMazing从App Store下载Instagram的IPA。 您可能已经知道,IPA文件只是一个zip文件,因此要提取其内容,只需将扩展名从.ipa更改为.zip。 我在Instagram.app包中查找了可能指示视频通话功能的所有资产。 可以使用Spotlight或在终端中使用find命令来完成。 自然,我寻找名称中带有“ videocall”或“ videochat”的文件,但找不到任何东西。 然后,我使用Asset Catalog Tinkerer打开Assets.car文件,并在其中查找任何内容。 由于搜索资产并没有取得成功,因此该研究二进制文件了。 我们正在谈论的是App Store应用,因此第一步是解密二进制文件。 与Apple的内置应用程序不同,从App Store下载的应用程序的二进制文件经过加密,并且只能在iOS设备上运行时才能解密,此过程只能越狱。 因此,我得到了方便的越狱iPhone 5S,将其连接到它,然后继续对该应用程序进行解密。 在越狱设备上解密二进制文件的过程如下: – SSH进入越狱设备 –运行目标应用 查找目标应用程序的PID: 使用bfinject将解密dylib注入目标进程,然后等待该进程完成: 之后,我使用netcat在Mac上下载了解密的IPA: 然后我将其重命名为.zip并从Payload文件夹中提取Instagram.app: 好的,现在我有了一个解密的Instagram版本,求你了! 我通常首先将二进制文件加载到Hopper中,但是Instagram的可执行文件高达50mb(!),因此我知道解析和反汇编将花费很长时间。 考虑到二进制文件的大小,我决定先进行字符串搜索,然后再对找到的内容进行跟踪。 请记住,在这一点上,我不确定我什至找不到任何东西,因此,花费所有时间(和CPU功率)分解二进制文件却一无所获是没有道理的。 从二进制文件中提取字符串是这样的: 这仅在解密的二进制文件中可行,因为加密版本将仅提供无意义的垃圾。 注意,我通过管道将strings命令的输出进行排序,然后将其输出到名为Instagram_34.txt的文件中。 我这样做是因为,如果需要的话,以后可以在版本之间进行区分。 排序意味着要比较的两个文件将更稳定,从而导致比较有用的差异。 对文件名进行版本控制意味着我始终知道字符串来自哪个版本。 在这种情况下,这是没有必要的,因为我没有做任何比较,但是在将来Instagram发布新版本并决定检查更改后,这可能会很有用。 准备好字符串文件后,就可以在该文件中搜索可以指示视频通话功能的内容。 抓取“视频通话”后发现: 只是摘录,还有很多其他的“视频通话”字符串。 因此,现在我知道他们肯定正在开发某种视频通话功能。 我可以在这里停下来,发布此消息并入睡。 但是,如果我可以实际运行该视频通话代码以观看实际操作该怎么办? 🤔 运行代码 要在我无法控制的应用程序中运行任意代码,我可以附加一个调试器然后从那里去,但这并不有趣,所以我决定使用Cycript! Bfinject内置Cycript: 现在,我可以将Mac上的Crycript控制台连接到我的iPhone […]

中国的MapKit

Apple Maps是我的默认地图应用程序。 无论我走到哪里,我总是使用它。 特别是在日本和新加坡,它将告诉我地铁站的出口以及如何步行。 超级方便。 我就喜欢。 在中国,Apple Maps使用高德提供的数据。 它也可能被称为AutoNavi。 这是一家本地公司,隶属于阿里巴巴集团。 他们在中国的数据相当不错。 与百度地图不同,与高德从未接触过错误的路线。 但是,它们在中国境外的数据非常有限。 如果您在中国并且正在寻找不在中国的地方,那么地图将如下所示: 这就是欧洲和美国的地图外观。 只有街道名称。 如果您认为情况不好,请让我们检查一下新加坡。 我们基本上是在看空白地图。 不幸的是,如果我们尝试在中国以外的地方搜索,我们将永远不会获得想要的结果。 它只会显示位于中国的结果。 如果您设备的GPS位置在中国,您将遇到问题。 (请注意:至少对于在中国销售的设备,我在其他国家/地区没有购买任何设备。如果您知道其他设备是否也会发生这种情况,请发表评论并让我知道。谢谢。) 也许您不是在制作旅行计划应用程序,但是这些问题也可能会影响您的客户。 MapKit使用与Apple Maps应用完全相同的地图数据。 以下示例来自Weather Line。 我在中国,想查询阿姆斯特丹的天气。 这就是我得到的: 如果您正在模拟器上进行测试,则无法发现问题,因为在模拟器地图上,数据来自Apple,而不是来自高德。 解决方案 Mapbox是一个很好的选择。 他们有很好的文档。 您甚至可以在https://www.mapbox.cn上请求在中国使用的其他API密钥。 他们声称它将为中国用户更快地加载地图。 如果由于某些原因您不想使用Mapbox,可以尝试使用Google Maps Web视图。 即使不是本地语言,您也可以使用Google Maps JavaScript API来实现MapKit和Mapbox提供的大多数功能。 请记住,要使用适用于中国的Google Maps API,URL必须为 http://maps.google.cn 。 仅HTTP有效。 HTTPS没有。 下一步是什么 我将写有关WKWebView的文章 。 这将分为两个部分。 在第一个中,我将讨论WKWebView的基础知识,如何在Mac上加载本地文件和调试。 在第二篇文章中,我将展示native和JavaScript如何相互通信。 […]

反向工程iOS应用程序-iOS 11版(第1部分)

尽管已经有很多关于“逆向工程iOS应用”的博客文章,教程甚至是youtube视频,但每次Apple发行新的iOS版本时,“游戏”都会改变。 研究人员必须找到一种新方法来越狱iOS的新发行版,并且我们必须更新工具以与新越狱环境一起工作。 对于最新的iOS 11越狱尤其如此,基于Ian Beer的async_wake漏洞的LiberiOS和Electra越狱技术与以前的越狱技术截然不同,并且大多数(全部?)现有工具在这些越狱时都被破坏了。 我将重点关注LiberiOS,因为这是我测试过的唯一一次越狱。 也是因为我是乔纳森·莱文(Jonathan Levin)的工作及其对社区的贡献的忠实拥护者。 LiberiOS越狱就是所谓的无KPP越狱(KPP代表内核补丁保护)。 基本上,这意味着KPP保护的内核区域没有任何修改,并且大多数越狱工具(如Clutch,dumpdecrypted)以及依赖Cydia Substrate的所有调整都尚未更新以使用此方法。 这篇文章的篇幅太长了,所以我决定将其分为两部分: 第1部分 :将帮助您设置设备并解密iOS应用 第2部分 :将帮助您转储应用程序的类,分解其指令并操纵运行时以更改应用程序的行为 教学大纲 第1部分 越狱您的设备(外部链接) 设置iTunnel 设置bfinject 使用bfinject decrypt解密Starbucks iOS应用 第2部分 使用class-dump转储星巴克应用程序的类 使用Hopper拆卸星巴克应用程序 使用bfinject cycript运行时操作 要开始重新使用iOS应用,您需要越狱的设备。 在本文中,我假设您使用的是iOS 11,因此让我们开始越狱设备。 我喜欢iClarified教程,并且它们对于在iOS 11–11.1.2上越狱您的iPhone / iPod / iPad(iDevice)来说是一个很棒的教程: 请按照iClarified的教程在此处使用LiberiOS越狱iDevice。 现在您的iDevice已越狱,我们可以开始对iOS应用进行逆向工程! 设置iTunnel 尽管LiberiOS的Dropbear SSH版本启用了wifi连接,但我发现USB更快,更可靠。 要使用照明电缆通过USB通过SSH进入设备,您需要设置iTunnel (或类似工具)。 从此处下载最新版本的iTunnel 提取.zip文件的内容 将itnl二进制文件复制到/usr/local/bin 将libmd.dylib库复制到/usr/local/lib 您也可以将两个文件都放在一个文件夹中,并使用./前缀执行itnl命令。 设置bfinject 正如我之前所说,许多现有工具无法像以前的越狱一样工作,但是感谢Bishop Fox,我们现在可以通过执行以下操作在LiberiOS中使用Clutch : 在桌面上创建一个名为bfinject的文件夹 […]

报价代码适用于iOS!

非常自豪地宣布报价代码已发布到iOS! 这是下载游戏的直接链接-https://itunes.apple.com/us/app/quote-codes/id1142929451?ls=1&mt=8 这是一段了不起的旅程,我们衷心希望您喜欢这款游戏。 另外,请确保继续检查博客,以了解我们对《报价代码日记》的延续。 我们很快将深入研究我们在游戏中使用的开发过程和技术。 这是下载游戏的链接— https://itunes.apple.com/us/app/quote-codes/id1142929451?ls=1&mt=8 对于任何新闻查询: 前往我们的 新闻资料袋 或者,您也可以给我们发送电子邮件: quotecodes@pixeldrop.in

在BuddyBuild中处理更新的pod

我们正在使用BuddyBuild作为CI。 运行得很好。 今天,我遇到了有关更新的广告连播的问题,这是我们如何解决问题的记录。 在我们的一个应用程序中,我们使用了自己的本地条形码扫描仪。 它使用子视图控制器模式进行了一次甜蜜的更新,该模式允许轻松进行自定义和实例配置。 版本4.1.1已发布到CocoaPods 因此,我使用pod update BarcodeScanner更新了pod,更新了代码以使用新的委托方法和配置。 一切都很好。 让我们提交并发出Pull请求。 BuddyBuild踢的构建,它失败。 日志说明了Podfile和Podfile.lock之间的冲突 尝试脚本 所以我想我可以运行一些自定义脚本来强制BuddyBuild更新Pod。 查看有关自定义脚本的文档,克隆后脚本听起来像是编写脚本的好地方 Buddybuild自动分析您的存储库,并自动以最佳构建设置对其进行配置。 但是,如果在构建过程中需要自定义逻辑,则可以在存储库中包含自定义脚本,以在构建过程中的四个点运行 克隆后脚本在git clone之后立即运行,然后buddybuild对存储库中的内容进行任何分析。 让我们创建一个文件buddybuild_postclone.sh 没用 让我们重置本地规格存储库 也没用。 然后,我仔细查看了日志 将CocoaPods版本切换到1.1.1 看来BuddyBuild正在使用cocoapods 1.1.1 。 我的是version 1.4.0 。 指定CocoaPods版本 所以我需要指定正确的CocoaPods版本,以确保我和BuddyBuild在同一页面上 在我的Gemfile 然后运行bundler install并检查Gemfile.lock以查看CocoaPods的版本为1.4.0。 新希望 提交更改后,BuddyBuild选择了正确的CocoaPods版本,现在可以正确使用新的Pod。

Golang:将推送通知发送到iOS设备

假设: 您的计算机中已安装Go语言 支持APNs的iOS示例应用程序用于测试 步骤1:生成证书PEM文件。 本文将帮助您生成PEM https://www.raywenderlich.com/123862/push-notifications-tutorial 步骤2:为APN安装Go库 去获取github.com/anachronistic/apns 步骤3:在main.go中编写以下函数。 将证书PEM文件放置在config文件夹中。 您可以根据需要更改推送URL。 func SendPushToClient(pushText string,pushToken string){ fmt.Println(“ SendPushToClient”) 有效负载:= apns.NewPayload() 有效负载。警报= pushText pn:= apns.NewPushNotification() pn.DeviceToken = pushToken pn.AddPayload(有效载荷) 客户端:= apns.NewClient(“ gateway.sandbox.push.apple.com:2195”,“ ./config/pushcert.pem”,“ ./config/pushcert.pem”) 响应:= client.Send(pn) 警报,_:= pn.PayloadString() fmt.Println(“ Alert:”,alert) fmt.Println(“ Success:”,分别为成功) fmt.Println(“错误:”,分别为错误) } 步骤4:从主函数调用“ SendPushToClient”函数。 在以下代码中替换客户端令牌 func main(){ SendPushToClient(“您好,来自APN”,“ ”) } 步骤5:编译并运行 去跑主 完整源代码main.go 包主 导入( […]