Skip to content

Commit

Permalink
Merge pull request #38 from Team-HMH/network/#34-challengeView
Browse files Browse the repository at this point in the history
Network [#34] 챌린지뷰 Realm 적용 / 번들 아이디 가져오기 시도 중
  • Loading branch information
Zoe0929 authored May 28, 2024
2 parents f3880b0 + 951b6c9 commit 66bbf53
Show file tree
Hide file tree
Showing 19 changed files with 434 additions and 47 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,9 @@ class DeviceActivityMonitorExtension: DeviceActivityMonitor {
//threshold에 도착하면 행동한다
override func eventDidReachThreshold(_ event: DeviceActivityEvent.Name, activity: DeviceActivityName) {
store.shield.applications = selectionApps.applicationTokens
screenTimeVM.handleSetBlockApplication()
Task {
await screenTimeVM.handleSetBlockApplication()
}
let notiContent = UNMutableNotificationContent()
notiContent.title = "하면함"
notiContent.body = "이용 시간이 종료 되었습니다."
Expand Down
32 changes: 32 additions & 0 deletions HMH_iOS/HMHDeviceActivityReport/AppActivityReport.swift
Original file line number Diff line number Diff line change
Expand Up @@ -9,10 +9,13 @@
import SwiftUI
import DeviceActivity

import RealmSwift

struct AppActivityReport: DeviceActivityReportScene {
let context : DeviceActivityReport.Context = .appActivity
let content: (ActivityReport) -> AppActivityView


func makeConfiguration(representing data: DeviceActivityResults<DeviceActivityData>) async -> ActivityReport {

var totalActivityDuration: Double = 0
Expand All @@ -26,6 +29,7 @@ struct AppActivityReport: DeviceActivityReportScene {
for await categoryActivity in activitySegment.categories {
/// 이 카테고리의 totalActivityDuration에 기여한 사용자의 application Activity
for await applicationActivity in categoryActivity.applications {
var id = 0
let appName = (applicationActivity.application.localizedDisplayName ?? "nil") /// 앱 이름
let bundle = (applicationActivity.application.bundleIdentifier ?? "nil") /// 앱 번들id
let duration = applicationActivity.totalActivityDuration /// 앱의 total activity 기간
Expand All @@ -39,6 +43,20 @@ struct AppActivityReport: DeviceActivityReportScene {
numberOfPickups: numberOfPickups,
token: token
)

let realmApp = Appdata(id: id)
realmApp.bundleId = bundle
realmApp.duraction = duration

do {
try RealmManager.shared.localRealm.write {
RealmManager.shared.localRealm.add(realmApp)
}
} catch {
print("Error initialising new realm \(error)")
}
list.append(appActivity)
id += 1
list.append(appActivity)
}
}
Expand Down Expand Up @@ -68,6 +86,7 @@ struct ChallengeActivityReport: DeviceActivityReportScene {
for await categoryActivity in activitySegment.categories {
/// 이 카테고리의 totalActivityDuration에 기여한 사용자의 application Activity
for await applicationActivity in categoryActivity.applications {
var id = 0
let appName = (applicationActivity.application.localizedDisplayName ?? "nil") /// 앱 이름
let bundle = (applicationActivity.application.bundleIdentifier ?? "nil") /// 앱 번들id
let duration = applicationActivity.totalActivityDuration /// 앱의 total activity 기간
Expand All @@ -81,7 +100,20 @@ struct ChallengeActivityReport: DeviceActivityReportScene {
numberOfPickups: numberOfPickups,
token: token
)
let realmApp = Appdata(id: id)
realmApp.bundleId = bundle
realmApp.duraction = duration

do {
let realm = try await Realm()
try realm.write {
realm.add(realmApp)
}
} catch {
print("Error initialising new realm \(error)")
}
list.append(appActivity)
id += 1
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ import FamilyControls

struct ChallengeActivityView: View {
var activityReport: ActivityReport

var body: some View {
VStack(alignment: .center) {
ForEach(activityReport.apps) { eachApp in
Expand Down
27 changes: 27 additions & 0 deletions HMH_iOS/HMHDeviceActivityReport/RealmManager.swift
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
//
// RealmManager.swift
// HMH_iOS
//
// Created by 이지희 on 5/28/24.
//

import Foundation

import RealmSwift

class RealmManager {
private init() { }

static let shared: RealmManager = .init()

var localRealm: Realm {
let container = FileManager.default.containerURL(forSecurityApplicationGroupIdentifier: "group.HMH")
let realmURL = container?.appendingPathComponent("default.realm")
let config = Realm.Configuration(fileURL: realmURL, schemaVersion: 1)
return try! Realm(configuration: config)
}

func getData() -> [Appdata] {
Array(localRealm.objects(Appdata.self))
}
}
13 changes: 13 additions & 0 deletions HMH_iOS/HMHDeviceActivityReport/TotalActivityReport.swift
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@

import DeviceActivity
import SwiftUI
import RealmSwift

extension DeviceActivityReport.Context {
// If your app initializes a DeviceActivityReport with this context, then the system will use
Expand Down Expand Up @@ -36,6 +37,18 @@ struct TotalActivityReport: DeviceActivityReportScene {
let totalActivityDuration = await data.flatMap { $0.activitySegments }.reduce(0, {
$0 + $1.totalActivityDuration
})

let time = TotalTime()
time.duraction = formatter.string(from: totalActivityDuration) ?? "No activity data"

do {
try RealmManager.shared.localRealm.write {
RealmManager.shared.localRealm.add(time)
}
} catch {
print("Error initialising new realm \(error)")
}

return formatter.string(from: totalActivityDuration) ?? "No activity data"
}
}
Loading

0 comments on commit 66bbf53

Please sign in to comment.