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

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

效果如下:


iOS Fastlane自动化打包(3) 打包结果推送通知到手机_第1张图片
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 Fastlane自动化打包(3) 打包结果推送通知到手机_第2张图片
image.png

event就是触发事件,也就是当你调用这个接口的时候,会触发IFTTT的动作(比如发邮件、发通知之类的),同时IFTTT还提供了三个可选值可以根据需要传

在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/***"
        
    end
    
    if 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/***"
    end

    puts notifyMsg

    ifttt(
        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 Fastlane自动化打包(3) 打包结果推送通知到手机_第3张图片
image.png

iOS Fastlane配合Jenkins实现一键自动化打包

你可能感兴趣的:(iOS Fastlane自动化打包(3) 打包结果推送通知到手机)