美文网首页iOS开发记录需要读的资料自动化打包
iOS Fastlane自动化打包(3) 打包结果推送通知到手机

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

作者: jzhang | 来源:发表于2018-12-17 11:07 被阅读117次

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

    效果如下:


    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)

    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标签一键打包的内容,效果如下图。这个内容比较多,后续另开一篇写。


    image.png

    相关文章

      网友评论

        本文标题:iOS Fastlane自动化打包(3) 打包结果推送通知到手机

        本文链接:https://www.haomeiwen.com/subject/fvnwhqtx.html