【问题标题】:Count user views (SwiftUI)统计用户浏览量 (SwiftUI)
【发布时间】:2021-12-11 04:47:26
【问题描述】:

如何计算用户浏览量?

例如,用户打开一个应用并获得 +1 视图。

每次下次打开应用程序时,都会添加 1 个视图。以此类推,一直到 100-200-300 等等

图片排名第一,观看次数为零 但是当用户打开应用两次时,会有两个视图。每个新发现都会增加一个观看次数

如果用户打开应用程序一百次,那么已经显示了一百次查看

这是我的代码

struct views: View {
   var body: some View {
        VStack {
            
            HStack {
                
                Image(systemName: "eye")
                    .resizable()
                    .scaledToFit()
                    .frame(width: 50, height: 50)
                Text("0")
                    .font(.system(size: 25))
                    .fontWeight(.bold)
                    .foregroundColor(Color.black)
                    .padding(.leading)
                
            }
            
        }
        .frame(width: 250, height: 150)
        .background(Color.gray.opacity(0.5))
        .cornerRadius(10)
    }
}

请帮帮我,我是 swift 新手,我会感谢您的帮助,谢谢!

【问题讨论】:

    标签: ios swift iphone xcode swiftui


    【解决方案1】:

    您可以使用@AppStorage 来存储观看次数 (https://www.hackingwithswift.com/quick-start/swiftui/what-is-the-appstorage-property-wrapper)。

    要知道应用程序何时激活并添加到计数器,您可以使用@Environment(\.scenePhase) (https://www.hackingwithswift.com/quick-start/swiftui/how-to-detect-when-your-app-moves-to-the-background-or-foreground-with-scenephase)。

    struct ContentView: View {
        @AppStorage("userViews") private var userViews = 0
        @Environment(\.scenePhase) var scenePhase
        
        var body: some View {
            VStack {
                HStack {
                    Image(systemName: "eye")
                        .resizable()
                        .scaledToFit()
                        .frame(width: 50, height: 50)
                    Text("\(userViews)")
                        .font(.system(size: 25))
                        .fontWeight(.bold)
                        .foregroundColor(Color.black)
                        .padding(.leading)
                    
                }
            }
            .frame(width: 250, height: 150)
            .background(Color.gray.opacity(0.5))
            .cornerRadius(10)
            
            .onChange(of: scenePhase) { newPhase in
                if newPhase == .active {
                    userViews += 1
                }
            }
        }
    }
    

    【讨论】:

    • 其他用户会看到这些视图吗?
    • 不——这是为了存储在一台设备上——这似乎是你的问题。如果您需要一个服务器来存储它,这是一个非常更大的问题。我会为这种类型的事情调查 Firebase。使用环境场景阶段的机制是相同的。
    • 非常感谢!)您知道如何让这些视图保存并被其他用户看到吗?
    • 是的——请看上面的评论。调查使用 Firebase 作为服务器后端。他们的文档中有很棒的教程。
    • 好的,我明白了,谢谢,我将创建一个新问题,希望他们能帮助我,我是编程新手,我想知道如何实现这个
    猜你喜欢
    • 2023-02-11
    • 2012-07-20
    • 1970-01-01
    • 2015-07-31
    • 2010-11-02
    • 2021-07-30
    • 2013-02-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多