Comunidade

GitHub - mykolaharmash/notelet: Componente SwiftUI para exibir notas de lançamento ricas dentro de um aplicativo · GitHub

O GitHub apresenta o projeto 'notelet', um pacote SwiftUI para exibir notas de lançamento ricas em aplicativos iOS. O componente permite a inclusão de diferentes tipos de itens, como listas e mídia (imagens e vídeos), facilitando a visualização das atualizações do app para os usuários.

Compartilhar
SwiftUI component for displaying rich release notes inside an app - mykolaharmash/notelet

Notelet logo

Pacote SwiftUI para mostrar notas de lançamento ricas em aplicativos iOS

demo.mp4

Dica

Depois de terminar aqui, confira meu outro projeto AppView para obter um site otimizado para seu aplicativo. Isso aumentará as baixas vindas da pesquisa web e sugestões de IA.

Instalação (Swift Package Manager)

  1. No Xcode, abra seu projeto de aplicativo.
  2. Vá para Arquivo → Adicionar Dependências do Pacote....
  3. Digite a URL do repositório https://github.com/mykolaharmash/notelet na pesquisa.
  4. Clique em "Adicionar pacote".
  5. Adicione Notelet ao seu alvo de aplicativo.

Aqui está um exemplo completo de uso com comentários para começar rapidamente. Abaixo estão explicações mais detalhadas sobre como o componente funciona e todas as APIs disponíveis.

import SwiftUI
// Import Notelet
import Notelet

/**
 * Notas de lançamento para diferentes versões do aplicativo.
 * Há três tipos de notas suportados: .list, .media(kind: .image) e .media(kind: .video).
 */
private let notes: [NoteletVersionNotes] = [
    .init(
        version: "1.2.0",
        items: [
            .list(
                title: "O que há de novo",
                rows: [
                    .init(
                        symbolSystemName: "wand.and.stars",
                        title: "Novas ferramentas do editor",
Mais opções de formatação com menos toques.
Dados sensíveis agora são tratados de forma mais rigorosa.
Atualização da interface

Visuals atualizados em telas-chave.

Versão 1.2.1

Arquivo de jornal

Arquivar entradas sem deletá-las permanentemente.

var body: some View { Text("Olá, Mundo!") /** * Adicione a folha ao hierarquia de visualização. * Ela recebe a lista completa de notas para todas as versões * e a versão que você deseja apresentar ao usuário. * Há mais parâmetros descritos abaixo. */ .noteletSheet( notes: notas, /** * `version: .current` obtém a versão atual do aplicativo do pacote, * e tenta mostrar as notas para ela se estiverem presentes em `notas`. * Ela também salva automaticamente esta versão como "vista" quando * a folha é descartada. */ version: .current ) } }

Notas de lançamento para a versão atual

O caso de uso mais comum é exibir as notas de lançamento para a última atualização do aplicativo. Anexe noteletSheet() à sua visualização e use version: .current.

.noteletSheet(
    notes: [...],
    version: .current
)

O Notelet obterá automaticamente a versão atual do aplicativo do pacote e exibirá as notas de lançamento. Quando o usuário descartar a folha, ela marcará a versão atual como vista, então o usuário não verá as mesmas notas de lançamento novamente.

Importante

O Notelet lê a versão atual do aplicativo do pacote do seu aplicativo, especificamente a propriedade CFBundleShortVersionString. É a versão que você vê no Xcode na guia "General" para um alvo. Certifique-se de usar esta versão do aplicativo ao adicioná-la à lista notas; pode ser diferente da versão que você tem no App Store Connect.

Quando especificar a versão diretamente como version: .current, a folha de notas será exibida automaticamente quando o hierárquico da visualização renderizar. Você também pode disparar manualmente a folha via uma propriedade State.

struct ContentView: View {
    @State private var presentedVersion: NoteletPresentedVersion? = nil

    var body: some View {
        VStack {
            Text("Hello, world!")

            Button("Mostrar Notas de Lançamento") {
                presentedVersion = .current
            }
        }
        .noteletSheet(
            notes: notes,
            version: presentedVersion
        )
    }
}

Mostrar manualmente as notas para uma versão específica

Você também pode querer mostrar as notas de lançamento para versões do aplicativo diferentes da atual, por exemplo, para fornecer aos usuários acesso ao histórico de alterações nas configurações do aplicativo.

 .noteletSheet(
    notes: notes,
    version: .v("1.2.1")
)

A lista de notas de lançamento para cada versão do aplicativo é um array de structs NoteletVersionNotes. Cada struct especifica a version e items.

Você pode ter quantas notas quiser dentro de items para cada versão, elas serão organizadas em uma view de paginação com navegação usando o botão "Próximo" ou por meio de swipe.

O array pode ser uma constante global ou uma propriedade estática em alguma visualização do nível superior. Eu pessoalmente mantenho isso como uma constante global.

let RELEASE_NOTES: [NoteletVersionNotes] = [
    .init(
        version: "1.2.0",
        items: [ ... ] // <-- release notes go here
    )
]

Dica

NoteletVersionNotes e todos os seus tipos aninhados conformam-se a Codable, então você pode carregar notas remotamente em tempo de execução.

A propriedade items para cada versão do aplicativo é um array de casos de enumeração NoteletVersionNoteItem. Existem três tipos de nota suportados:

  • .list
  • .media(kind: .image)
  • .media(kind: .video)

Mostra um título e um conjunto de linhas, onde cada linha tem um SF Symbol, um título e uma descrição.

Este tipo de nota é ideal para mostrar ao usuário um resumo rápido da atualização.

let RELEASE_NOTES: [NoteletVersionNotes] = [
    .init(
        version: "1.2.0",\n        items: [
            .list(
                title: "What's new",\n                rows: [
                    .init(
                        symbolSystemName: "sparkles",\n                        title: "Polished details",\n                        description: "Small UI upgrades throughout the app."
                    )
                ]
            )
        ]
    )
]

Observação

All text properties are defined internally as LocalizedStringResource so they automatically end up in the string catalog ready for localization.

Carrega e exibe uma imagem junto com um título e descrição. Ótimo para atualizações que precisam de mais contexto visual.

A imagem será envolta em um contêiner quadrado. Partes da imagem serão cortadas para preencher o contêiner se a proporção de aspecto for diferente de 1:1. É melhor usar imagens quadradas ou pelo menos ter o assunto principal no centro, para que não seja afetada pelo corte.

let RELEASE_NOTES: [NoteletVersionNotes] = [
    .init(
        version: "1.2.0",
        items: [
            .media(
                kind: .image,
                url: URL(string: "https://example.com/preview.jpg")!,
                title: "UI preview",
                description: "A quick look at the redesign."
            )
        ]
    )
]

Carrega e reproduz um vídeo junto com um título e descrição. Ótimo para casos em que uma funcionalidade precisa de mini-onboarding ou quando você quer destacá-la para o usuário.

Da mesma forma que as imagens, o vídeo será envolvido em um contêiner quadrado, então partes dele podem ser cortadas se tiver proporção não-quadrada.

let RELEASE_NOTES: [NoteletVersionNotes] = [
    .init(
        version: "1.2.0",
        items: [
            .media(
                kind: .video,
                url: URL(string: "https://example.com/demo.mp4")!,
                title: "Feature demo",
                description: "Veja o fluxo em ação."
            )
        ]
    )
]

.noteletSheet() tem um parâmetro opcional onDismiss semelhante ao padrão .sheet().

Dica

onDismiss é um bom lugar para pedir aos usuários uma avaliação logo após você mostrar as atualizações do aplicativo.

o código .noteletSheet() aceita uma estrutura opcional NoteletConfiguration, onde você pode personalizar rótulos de botões e cor de destaque.

Fonte original

Conteúdo traduzido e adaptado pela redação do Notícias Mobile. Confira também a matéria na fonte original.

Leia a matéria completa