Tài liệu · Tích hợp iOS
7. Lưu trữ tùy chọn cục bộ (PreferencesManager)
Sử dụng NSUserDefaults làm cơ chế lưu trữ bên dưới. Có hai lớp tồn tại song song với cùng một bộ phương thức: PreferencesManager và AppsKitSDKPreferencesManager — dùng lớp nào cũng được; hãy chọn một lớp và sử dụng nhất quán thay vì chia thao tác đọc/ghi giữa cả hai.
swift
// Booleans, Ints, Strings, Float, Long all live under the same "addInPreferences" family.
// These look unusual but are the real generated parameter labels — Swift doesn't support
// overloading purely by parameter type, so each overload gets a distinct label:
PreferencesManager.shared.addInPreferences(key: "onboarding_done", value: true) // Bool
PreferencesManager.shared.addInPreferences(key: "launch_count", value_: 5) // Int? (KotlinInt)
PreferencesManager.shared.addInPreferences(key: "user_name", value__: "Talha") // String?
// ...or use the explicitly-named variants instead, which read more clearly:
PreferencesManager.shared.addInPreferencesAsLong(key: "last_sync_time", value: Int64(Date().timeIntervalSince1970))
PreferencesManager.shared.addInPreferencesAsFloat(key: "scroll_position", value: 12.5)
PreferencesManager.shared.addInPreferencesAsString(key: "user_name", value: "Talha")
PreferencesManager.shared.getStringPreferences(key: "user_name", defaultValue: "")
PreferencesManager.shared.getIntegerPreferences(key: "launch_count", defaultValue: 0)
PreferencesManager.shared.getBooleanPreferences(key: "onboarding_done", defaultValue: false)
PreferencesManager.shared.getLongPreferences(key: "last_sync_time", defaultValue: 0)
PreferencesManager.shared.getFloatPreferences(key: "scroll_position", defaultValue: 0)
// Remove a single key
PreferencesManager.shared.flushSavedCache(key: "user_name")
// Custom serializable object as JSON
PreferencesManager.shared.getCustomPreference(key: "user_profile", serializer: UserProfile.companion.serializer(), defaultJson: nil)Đây cũng là nơi AKS lưu trữ các cờ nội bộ (REMOVE_ADS, v.v.) — hãy đặt các khóa của bạn trong một không gian tên riêng biệt để tránh trùng lặp.