美文网首页
创建一个App Clip

创建一个App Clip

作者: 烽火连天x | 来源:发表于2020-07-01 16:20 被阅读0次

    官方Demo下载地址Feature-Rich App, 建议学者下载此Demo参考。

    概述

    在你的Xcode项目中,在你的应用程序中target需要新建一个你的App Clip,App Clip与你的主应用程序共享code和assets。在你的工程中App Clip与其他targets一样,您可以使用Xcode在模拟器或设备上构建、运行和调试App Clip。此外,您必须配置web服务器以使系统能够验证App Clip的真实性。
    *** Important
    在创建App Clip之前,请参见:Developing a Great App Clip或者笔者的App Clips功能***

    添加一个App Clip Target

    创建一个App Clip,需要提供至少与App clip相同功能的主应用工程,并且你应该对主应用和App clip使用相同的Xcode项目。如果你要启动一个新的应用项目,首先用Xcode创建一个新的iOS项目。如果要将App Clip添加到现有应用程序中,请打开其Xcode项目,然后,将app clip target添加到Xcode项目:

    1. 添加App Clip Target


      5.png
    2. 选择好Project,填写其它选项,点击“Finish”


      6.png

    Xcode会为你选择的选项创建所有必需的文件,并为你的App Clip添加一个Target:

    • 会创建一个App Clip Scheme用于build和run你的App Clip。

    • 会创建一个新增能力On Demand Install Capable

    • Parent Application Identifiers Entitlement

    • App Clip的Bundle Identifier使用主应用的Bundle Identifier作为其前缀,后跟一个字符串。例如,如果主应用的Bundle Identifier为(AppIdentifierPrefix)com.example.MyApp,App Clip的Bundle Identifier将为(AppIdentifierPrefix)com.example.MyApp.Clip。

    • _XCAppClipURL环境变量作为app clip方案的一部分,允许您测试调用。

    • 支持与主应用相同的设备,不包括macOS。

    此外,Xcode为应用Target创建一个新的构建阶段,该阶段将App Clip嵌入到应用程序中。

    在将自己的代码添加到App Clip Target之前,请在模拟器或设备上运行App Clip。此时,应用程序剪辑显示一个空白的白色屏幕,因为您还没有添加任何code和assets。

    添加Associated Domains Entitlement

    用户从将调用URL传递到App Clip中会启动App Clip,或者,如果用户安装主应用以替换App Clip,调用URL会启动主应用。无论您选择支持哪种调用,都必须将Associated Domains Entitlement添加到主应用和App Clip Target:

    1. 在Xcode中打开项目;然后,在Targets -> Signing & Capabilities中,点击“+ Capability”添加Associated Domains。
    2. 对于启动App Clip或主应用的每个URL,使用以下模式将其域名添加Associated Domains capability:appclips:<fully-qualified domain>。例如,添加appclips:example.com。


      7.png

    除了添加Associated Domains Entitlement外,您还必须对服务器进行更改,以允许系统在启动前验证你的App Clip。有关详细信息,请参阅Configuring Your App Clip’s Launch Experience
    有关Associated Domains的信息,请参阅Make Changes to Your Server and Your Xcode Project

    添加 Code 和 Assets

    App clips和主应用使用相同的框架,向App clip的Target添加代码或assert的方式与对其他Target添加方式都一样。创建新的源文件和assets,或将主应用现有源文件和assets用作App Clip目标的成员。为了提高项目的可维护性,主应用和App Clip应该尽可能多的共享代码:

    • 如果你创建了一个新的应用程序,在构建它时要考虑到创建一个App Clip,并尽量模块化、组件化代码。例如,创建可重用组件,将它们打包为 Swift Packages,并在主应用和App Clip中使用这些包。有关详细信息,请参阅Organizing Your Code with Local Packages

    • 如果你将一个App Clip添加到一个现有的应用程序中,花时间重构代码使之模块化,并在App Clip和主应用之间共享代码,以避免代码重复。

    • 将assets资源添加到新的assets目录下,主应用和App Clip可以使用该目录下的assets资源。有关详细信息,请参见 About Asset Catalogs

    配置Active Compilation Conditions

    在App Clip和主应用之间共用代码时,可能会遇到在App Clip中无法使用主应用的某些代码的情况。在这些情况下,请设置Active Compilation Conditions,在App Clip 的Targets ->Build Setting中可以声明排除代码的条件。


    8.png

    然后在需要的地方添加一个条件,以排除你不想在你的App Clip中使用的代码。例如:

    #if !APPCLIP
    // Code you don't want to use in your app clip.
    #else
    // Code your app clip may access.
    #endif
    

    对服务器和Xcode项目进行配置

    在系统显示app clip card或允许调用app clip之前,系统会验证app clip的配置和启动的URL。如果无法执行验证,系统将不会在桌面显示app clip card,也不会启动app clip。要使系统能够验证你的app clip,您需要对web服务器和Xcode项目进行配置。

    1. 把 Apple App Site Association file添加到你的服务器上,可以参考Supporting Associated Domains in Your App
    2. 在服务端创建或者已存在apple-app-site-association文件,在此文件中为App Clip添加appclips键值。下面的代码是要添加的内容,请注意apps键的值是一个数组,其中只有一个是app clip的app identifier。
    {
       "appclips": {
           "apps": ["ABCED12345.com.example.MyApp.Clip"]
       }
       ...
    } 
    

    例如在网页中配置App Clip的推荐条,若打开App Clip你还需要为你的HTML界面添加apple-itunes-app:

    <meta name="apple-itunes-app" 
        content="app-clip-bundle-id=com.example.fruta.Clip,
        app-id=123456789">
    
    1. 在Xcode中,为app和app clip添加Associated Domains Entitlement配置。

    配置和响应

    你在App Store Connect中配置的URL,是为了系统来启动App Clip。因此,识别App Clip的URL来启动你的App Clip,在启动时对URL进行响应,并在app Store Connect中注册它们对创建App Clip至关重要。有关更多信息,请参考Configuring Your App Clip’s Launch ExperienceResponding to Invocations

    发布App Clip

    App Clip需要对应的主应用。准备发布App Clip时,请将其作为主应用Archive的一部分提交。请注意,你的App Clip必须在App Store通过审核后,才能发布。

    相关文章

      网友评论

          本文标题:创建一个App Clip

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