GithubHelp home page GithubHelp logo

frutaapp's Introduction

Fruta:使用 SwiftUI 构建功能丰富的应用程序

创建共享代码库以构建提供小部件和 App Clip 的多平台应用程序。

概述

Fruta 示例应用程序为 macOS、iOS 和 iPadOS 构建了一个应用程序,它实现了 SwiftUI 平台功能,例如小部件、App Clips 和本地化。 用户可以用英语和俄语订购冰沙、保存最喜欢的饮料、收集奖励以及浏览食谱。

示例应用程序的 Xcode 项目包括小部件扩展,使用户能够将小部件添加到他们的 iOS 主屏幕或 macOS 通知中心,并查看他们的奖励或最喜欢的冰沙。 Xcode 项目还包括一个 App Clip 目标。 使用 App Clip,用户可以在 iPhone 或 iPad 上发现并立即启动该应用的某些功能,而无需安装完整的应用。

Fruta 示例应用程序利用 Sign in with AppleApple Pay 提供简化的 用户体验。

配置示例代码项目

要为 iOS 15 构建此项目,请使用 Xcode 13。运行时要求是 iOS 15。要为 macOS 12 Monterey beta 7 构建此项目,请使用 Xcode 13 beta 5。要配置此项目,请执行以下步骤:

  1. 要在您的设备(包括 macOS)上运行,请在目标的签名和功能窗格中设置您的团队。 Xcode 为您管理配置文件。
  2. 要在 iOS 或 iPadOS 设备上运行,请打开 iOSClip.entitlements 文件并更新 [Parent Application Identifiers Entitlement](https://developer.apple.com/documentation/bundleresources/entitlements/com_apple_developer_parent-application- identifiers) 以匹配 iOS 应用程序的包标识符。
  3. 记下项目设置中 iOS 目标的 Signing & Capabilities 选项卡上的 App Group 名称。 用这个值替换 Model.swift 文件中的 group.example.fruta。
  4. 要启用应用内购买流程,请编辑 Fruta iOS “运行”方案,并为 StoreKit 配置选择 Configuration.storekit

在 SwiftUI 中创建共享代码库

为了创建适用于多个平台的单个应用程序定义,项目定义了一个结构,该结构符合 App 协议。 因为 @main 属性在结构定义之前,系统将结构识别为应用程序的入口点。 其计算出的 body 属性返回一个 WindowGroup 包含应用程序向用户显示的视图层次结构的场景。 SwiftUI 以适合平台的方式管理场景及其内容的呈现。

@main
struct FrutaApp: App {
    @StateObject private var model = Model()
    
    var body: some Scene {
        WindowGroup {
            ContentView()
                .environmentObject(model)
        }
        .commands {
            SidebarCommands()
            SmoothieCommands(model: model)
        }
    }
}

View in Source

有关更多信息,请参阅 App 结构和行为

提供 App Clip

在 iOS 和 iPadOS 上,Fruta 应用程序为没有将完整应用程序安装为 App Clip 的用户提供部分功能。 该应用程序的 Xcode 项目包含一个 App Clip 目标,并且不会重复代码,而是重用跨所有平台共享的代码来构建 App Clip。 在共享代码中,该项目利用 Active Compilation Condition 构建设置来排除未定义 APPCLIP 值的目标的代码。 例如,只有 App Clip 目标呈现 App Store 叠加层以提示用户获取完整的应用程序。

VStack(spacing: 0) {
    Spacer()
    
    orderStatusCard
    
    Spacer()
    
    if presentingBottomBanner {
        bottomBanner
    }
    
    #if APPCLIP
    Text(verbatim: "App Store Overlay")
        .hidden()
        .appStoreOverlay(isPresented: $presentingAppStoreOverlay) {
            SKOverlay.AppClipConfiguration(position: .bottom)
        }
    #endif
}
.onChange(of: model.hasAccount) { _ in
    #if APPCLIP
    if model.hasAccount {
        presentingAppStoreOverlay = true
    }
    #endif
}

View in Source

有关更多信息,请参阅 使用 Xcode 创建 App Clip 和 [为您的 App Clip 选择正确的功能](https://developer.apple. com/documentation/app_clips/choosing_the_right_functionality_for_your_app_clip)。

创建小部件

为了允许用户在他们的 iOS 主屏幕或 macOS 通知中心中以小部件的形式查看应用程序的一些内容,Xcode 项目包含小部件扩展的目标。 两者都使用在所有目标之间共享的代码。

有关详细信息,请参阅 WidgetKit

frutaapp's People

Contributors

sunandfu avatar xiaofu666 avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.