iOS|iOS Fastlane自动化打包(3) 打包结果推送通知到手机

iOS Fastlane自动化打包(1) 安装和打包IPA
iOS Fastlane自动化打包(2) 自动上传IPA到蒲公英
前文介绍了如何用Fastlane打包以及上传蒲公英,大大简化了提交企业包的步骤,但是作为一个强迫症,还觉得不完美。做到这个程度,还是需要守在打包机面前,等待打包结果。最理想化的场景就是,打包成功或者失败都推送到手机上,不需要人工去查看打包结果。
效果如下:

iOS|iOS Fastlane自动化打包(3) 打包结果推送通知到手机
文章图片
image.png 其实从图上也可以看出来,我最终使用的是IFTTT完成推送。

什么是 IFTTT?
简单说 IFTTT 是一个服务(也就是我们说的「智能管家」),对于这个服务,我们只需要设置规则,告诉它「如果 A 完成了事情 1,那么就让 B 完成事情 2」,它就会忠实地检查这些规则,并帮我们执行对应的任务。
在 IFTTT 中,我们可以通过 If This Then That 的句式,分别设置 This(条件)和 That(动作),IFTTT 会像忠实的管家一样,自动检查条件是否达成,一旦条件被触发,它就会自动执行条件对应的动作,有了这个智能管家,我们就能真正地玩转智能生活了。
详细的介绍可以参考少数派的文章:玩转 IFTTT,互联网自动化也可以很简单
虽然IFTTT可以做很多事情,但是我们可以不用管它能做到什么事情,也不用管它的原理。因为我们这里只需要利用它给自己发通知,只需要完成利用它给自己发通知的就行了,按照下面的步骤做即可
首先链接IFTTT的webhooks服务,得获取api_key( 步骤见:IFTTT开启Webhooks) iOS|iOS Fastlane自动化打包(3) 打包结果推送通知到手机
文章图片
image.png event就是触发事件,也就是当你调用这个接口的时候,会触发IFTTT的动作(比如发邮件、发通知之类的),同时IFTTT还提供了三个可选值可以根据需要传
【iOS|iOS Fastlane自动化打包(3) 打包结果推送通知到手机】在IFTTT设置好event以及收到event进行的操作。
利用fastlane提供的IFTTT的action
ifttt( api_key: "...", event_name: "...", value1: "foo", value2: "bar", value3: "baz" )

Fastfile文件代码:
default_platform(:ios)platform :ios do desc "***" lane :pkg do |options|# 获取当前目录下的plist文件中的版本号 version = get_info_plist_value(path: "./RealEstateManagement/Info.plist", key: "CFBundleShortVersionString") configuration = options[:to]# 打包 gym( # 打包的target名称 scheme:"RealEstateManagement", # 打包方式 企业版 export_method:"enterprise", output_directory:"/Users/Javen/Desktop/fastlane", output_name:"***_#{version}_#{configuration}_#{Time.now.strftime('%Y%m%d%H%M%S')}.ipa", export_xcargs: "-allowProvisioningUpdates", ) notifyMsg = ''#上传蒲公英 if configuration == "test" puts "\033[31m打包完成,正在上传测试蒲公英\033[0m\n" pgyer( api_key: "***", user_key: "***" ) notifyMsg = " HD-CRE 统一版本测试版 已发布! 版本号:#{version} iOS:http://www.pgyer.com/*** Android:http://www.pgyer.com/***"endif configuration == "release" puts "\033[31m打包完成,正在上传正式蒲公英\033[0m\n" pgyer( api_key: "***", user_key: "***" )notifyMsg = " HD-CRE 统一版本正式版 已发布! 版本号:#{version} iOS:http://www.pgyer.com/*** Android:http://www.pgyer.com/***" endputs notifyMsgifttt( api_key: "***", event_name: "pkg", value1: notifyMsg, # value2: "bar", # value3: "baz" )end end

我这里event_name是英文的,如果你设置的event是中文的话,由于是拼接在URL里面的,直接用中文会报错。需要对字符串进行转码,例如event_name: URI::escape("打包通知:")
到这里就完成了自动打包以及打包结果推送通知到手机所有内容。
还差安装Jenkins以及配合fastlane根据git标签一键打包的内容,效果如下图。这个内容比较多,后续另开一篇写。

iOS|iOS Fastlane自动化打包(3) 打包结果推送通知到手机
文章图片
image.png iOS Fastlane配合Jenkins实现一键自动化打包

    推荐阅读