{"id":33795,"date":"2025-11-07T05:31:53","date_gmt":"2025-11-07T02:31:53","guid":{"rendered":"https:\/\/fatihsoysal.com\/blog\/harmonyos-preferences-ile-kisisellestirilmis-ayar-depolama-rehberi\/"},"modified":"2025-11-07T05:31:53","modified_gmt":"2025-11-07T02:31:53","slug":"harmonyos-preferences-ile-kisisellestirilmis-ayar-depolama-rehberi","status":"publish","type":"post","link":"https:\/\/fatihsoysal.com\/blog\/harmonyos-preferences-ile-kisisellestirilmis-ayar-depolama-rehberi\/","title":{"rendered":"HarmonyOS Preferences ile Ki\u015fiselle\u015ftirilmi\u015f Ayar Depolama Rehberi"},"content":{"rendered":"<p>HarmonyOS uygulamalar\u0131n\u0131zda kullan\u0131c\u0131lar\u0131n ki\u015fisel ayarlar\u0131n\u0131 g\u00fcvenle ve etkili bir \u015fekilde nas\u0131l depolayaca\u011f\u0131n\u0131z\u0131 merak m\u0131 ediyorsunuz? Preferences API ile cihazlar aras\u0131 senkronizasyon ve veri b\u00fct\u00fcnl\u00fc\u011f\u00fcn\u00fc sa\u011flay\u0131n, kullan\u0131c\u0131 deneyimini zirveye ta\u015f\u0131y\u0131n.<\/p>\n<p>G\u00fcn\u00fcm\u00fcz dijital d\u00fcnyas\u0131nda, bir uygulaman\u0131n ba\u015far\u0131s\u0131 sadece sundu\u011fu temel \u00f6zelliklerle s\u0131n\u0131rl\u0131 de\u011fildir. Kullan\u0131c\u0131lar, kulland\u0131klar\u0131 ara\u00e7lar\u0131n kendi ihtiya\u00e7lar\u0131na ve zevklerine g\u00f6re \u015fekillenebilmesini beklerler. Bu ki\u015fisel dokunu\u015flar, kullan\u0131c\u0131n\u0131n uygulamayla kurdu\u011fu ba\u011f\u0131 g\u00fc\u00e7lendiren kritik unsurlard\u0131r; sadakati, kullan\u0131m s\u0131kl\u0131\u011f\u0131n\u0131 ve genel memnuniyeti do\u011frudan etkiler. \u00d6rne\u011fin, bir uygulaman\u0131n tema tercihi, bildirim ayarlar\u0131 veya favori listeleri gibi ki\u015fiselle\u015ftirilebilir se\u00e7enekler, uygulaman\u0131n &#8220;kendine ait&#8221; hissetmesini sa\u011flar.<\/p>\n<p>Peki, bir geli\u015ftirici olarak bu ki\u015fiselle\u015ftirme beklentisini nas\u0131l kar\u015f\u0131layabilirsiniz? Kullan\u0131c\u0131lar\u0131n yapt\u0131\u011f\u0131 se\u00e7imleri, uygulama kapat\u0131l\u0131p a\u00e7\u0131ld\u0131\u011f\u0131nda bile kaybolmadan nas\u0131l saklayabilirsiniz? \u0130\u015fte bu sorunun cevab\u0131, veri kal\u0131c\u0131l\u0131\u011f\u0131 (data persistence) kavram\u0131nda gizlidir. Kullan\u0131c\u0131 ayarlar\u0131n\u0131n kal\u0131c\u0131 olarak depolanmas\u0131, uygulama deneyiminin tutarl\u0131 ve kesintisiz olmas\u0131n\u0131n temelidir. HarmonyOS gibi modern i\u015fletim sistemleri, bu ihtiyac\u0131 kar\u015f\u0131lamak \u00fczere \u00e7e\u015fitli mekanizmalar sunar. Bu makalede, HarmonyOS geli\u015ftiricileri i\u00e7in kullan\u0131c\u0131 ki\u015fiselle\u015ftirmesini kolayca y\u00f6netmelerini sa\u011flayan g\u00fc\u00e7l\u00fc bir ara\u00e7 olan Preferences API&#8217;sine odaklanaca\u011f\u0131z. Preferences, anahtar-de\u011fer (key-value) \u00e7iftleri \u015feklinde k\u00fc\u00e7\u00fck boyutlu verileri depolamak i\u00e7in idealdir; \u00f6zellikle kullan\u0131c\u0131 aray\u00fcz\u00fc ayarlar\u0131, oturum bilgileri veya basit uygulama tercihleri gibi durumlar i\u00e7in bi\u00e7ilmi\u015f kaftand\u0131r. Bu sayede, kullan\u0131c\u0131lar her seferinde s\u0131f\u0131rdan ba\u015flamak zorunda kalmazlar, bu da uygulaman\u0131n kullan\u0131m kolayl\u0131\u011f\u0131n\u0131 \u00f6nemli \u00f6l\u00e7\u00fcde art\u0131r\u0131r. Dahas\u0131, da\u011f\u0131t\u0131lm\u0131\u015f yetenekleri sayesinde HarmonyOS&#8217;ta depolanan Preferences verileri, kullan\u0131c\u0131lar\u0131n farkl\u0131 HarmonyOS cihazlar\u0131 aras\u0131nda sorunsuz bir \u015fekilde senkronize edilebilir, b\u00f6ylece ki\u015fiselle\u015ftirilmi\u015f deneyim her cihazda devam eder. Bu makalede, Preferences API&#8217;nin temelden ileri seviyeye t\u00fcm y\u00f6nlerini ele alacak, kod \u00f6rnekleriyle uygulaman\u0131za nas\u0131l entegre edece\u011finizi g\u00f6sterecek ve en iyi pratikleri payla\u015farak uygulaman\u0131z\u0131n kalitesini art\u0131rman\u0131za yard\u0131mc\u0131 olaca\u011f\u0131z.<\/p>\n<h2 id=\"harmonyos-preferences-nedir\">HarmonyOS Preferences Nedir ve Temel Kullan\u0131m Senaryolar\u0131 Nelerdir?<\/h2>\n<p>HarmonyOS ekosisteminde, uygulama i\u00e7i ayarlar\u0131n ve k\u00fc\u00e7\u00fck boyutlu verilerin kal\u0131c\u0131 olarak depolanmas\u0131 i\u00e7in kullan\u0131lan birincil mekanizmalardan biri Preferences API&#8217;sidir. Basit\u00e7e ifade etmek gerekirse, Preferences, uygulama verilerini anahtar-de\u011fer \u00e7iftleri (key-value pairs) \u015feklinde depolayan hafif bir depolama \u00e7\u00f6z\u00fcm\u00fcd\u00fcr. Bu yap\u0131s\u0131 itibar\u0131yla, bir veriyi depolamak i\u00e7in benzersiz bir anahtar (string) ve bu anahtara kar\u015f\u0131l\u0131k gelen bir de\u011fer (int, string, boolean, float, long gibi temel veri tipleri) kullan\u0131rs\u0131n\u0131z. Bu yakla\u015f\u0131m, veriye h\u0131zl\u0131 eri\u015fim sa\u011flar ve \u00f6zellikle karma\u015f\u0131k veri yap\u0131lar\u0131 yerine basit, do\u011frudan eri\u015filebilir bilgilere ihtiya\u00e7 duyuldu\u011funda olduk\u00e7a etkilidir.<\/p>\n<p>Preferences&#8217;\u0131n en belirgin \u00f6zelliklerinden biri, depolad\u0131\u011f\u0131 verilerin uygulama kapat\u0131lsa veya cihaz yeniden ba\u015flat\u0131lsa bile kal\u0131c\u0131 olmas\u0131d\u0131r. Bu kal\u0131c\u0131l\u0131k, kullan\u0131c\u0131 deneyiminin s\u00fcreklili\u011fi a\u00e7\u0131s\u0131ndan hayati \u00f6neme sahiptir. \u00d6rne\u011fin, bir kullan\u0131c\u0131n\u0131n tema tercihi, dil ayar\u0131 veya bildirim tercihleri gibi bilgiler, her uygulama ba\u015flat\u0131ld\u0131\u011f\u0131nda yeniden ayarlanmak zorunda kal\u0131nmadan hat\u0131rlan\u0131r. Bu, kullan\u0131c\u0131n\u0131n uygulaman\u0131zla etkile\u015fimini \u00e7ok daha ak\u0131c\u0131 ve ki\u015fisel hale getirir. Preferences verileri genellikle uygulama \u00f6zelinde depolan\u0131r ve di\u011fer uygulamalar taraf\u0131ndan do\u011frudan eri\u015filemez, bu da belirli bir g\u00fcvenlik ve izolasyon katman\u0131 sa\u011flar.<\/p>\n<p>Peki, HarmonyOS Preferences&#8217;\u0131 hangi senaryolarda kullanmal\u0131y\u0131z? \u0130\u015fte baz\u0131 temel kullan\u0131m alanlar\u0131:<\/p>\n<ul>\n<li><strong>Kullan\u0131c\u0131 Aray\u00fcz\u00fc Ayarlar\u0131:<\/strong> Uygulaman\u0131n tema rengi (a\u00e7\u0131k\/koyu mod), yaz\u0131 tipi boyutu, dil se\u00e7imi gibi ayarlar\u0131 depolamak.<\/li>\n<li><strong>Oturum Y\u00f6netimi:<\/strong> Kullan\u0131c\u0131n\u0131n oturum a\u00e7\u0131p a\u00e7mad\u0131\u011f\u0131 bilgisi, son giri\u015f zaman\u0131, basit token&#8217;lar (hassas veriler i\u00e7in daha g\u00fcvenli depolama y\u00f6ntemleri tercih edilmeli) gibi bilgileri saklamak.<\/li>\n<li><strong>Uygulama \u0130\u00e7i Tercihler:<\/strong> Bildirimlerin a\u00e7\u0131k\/kapal\u0131 olmas\u0131, belirli \u00f6zelliklerin etkinle\u015ftirilip etkinle\u015ftirilmedi\u011fi, ilk \u00e7al\u0131\u015ft\u0131rma k\u0131lavuzunun g\u00f6sterilip g\u00f6sterilmedi\u011fi gibi uygulama bazl\u0131 tercihleri depolamak.<\/li>\n<li><strong>Ge\u00e7ici Durumlar:<\/strong> Kullan\u0131c\u0131n\u0131n en son kald\u0131\u011f\u0131 ekran gibi ge\u00e7ici durum bilgilerini saklamak.<\/li>\n<\/ul>\n<p>Preferences, verileri dahili depolama biriminde genellikle XML format\u0131nda veya benzer bir yap\u0131land\u0131rma dosyas\u0131nda saklar. Bu dosyalar, uygulaman\u0131z\u0131n veri dizininde bulunur. HarmonyOS&#8217;un da\u011f\u0131t\u0131lm\u0131\u015f yetenekleriyle birlikte kullan\u0131ld\u0131\u011f\u0131nda, Preferences verileri, ayn\u0131 kullan\u0131c\u0131ya ait farkl\u0131 HarmonyOS cihazlar\u0131 aras\u0131nda da otomatik olarak senkronize edilebilir. Bu, kullan\u0131c\u0131n\u0131n telefonunda yapt\u0131\u011f\u0131 bir ayar\u0131n, tabletinde veya ak\u0131ll\u0131 saatinde de ge\u00e7erli olmas\u0131n\u0131 sa\u011flayarak tutarl\u0131 bir \u00e7oklu cihaz deneyimi sunar. Ancak, b\u00fcy\u00fck veri k\u00fcmeleri, veritaban\u0131 benzeri ili\u015fkisel yap\u0131lar veya g\u00fcvenlik a\u00e7\u0131s\u0131ndan \u00e7ok hassas bilgiler i\u00e7in Preferences yerine daha geli\u015fmi\u015f depolama \u00e7\u00f6z\u00fcmlerini (\u00f6rne\u011fin, Distributed Data Service, ObjectStore veya veritabanlar\u0131) tercih etmek daha uygun olacakt\u0131r. Preferences&#8217;\u0131n temel g\u00fcc\u00fc, basitli\u011fi, h\u0131z\u0131 ve kullan\u0131m kolayl\u0131\u011f\u0131d\u0131r.<\/p>\n<h2 id=\"preferences-temel-veri-depolama\">HarmonyOS Preferences ile Temel Veri Depolama Nas\u0131l Yap\u0131l\u0131r? Ad\u0131m Ad\u0131m Rehber<\/h2>\n<p>\u015eimdi gelelim i\u015fin uygulamal\u0131 k\u0131sm\u0131na! HarmonyOS uygulaman\u0131zda Preferences API&#8217;sini kullanarak kullan\u0131c\u0131 ayarlar\u0131n\u0131 nas\u0131l depolayaca\u011f\u0131n\u0131z\u0131 ad\u0131m ad\u0131m inceleyelim. Bu b\u00f6l\u00fcmde, Preferences \u00f6rne\u011fi olu\u015fturmaktan, veri yazmaya, okumaya ve silmeye kadar temel i\u015flemleri ele alaca\u011f\u0131z.<\/p>\n<div class=\"expert-tip\">\n  Uzman \u0130pucu: Her bir Preferences dosyas\u0131 uygulaman\u0131z\u0131n dahili depolama alan\u0131nda saklan\u0131r. Farkl\u0131 ayar gruplar\u0131 i\u00e7in (\u00f6rne\u011fin, &#8216;genel_ayarlar&#8217;, &#8216;kullanici_profil&#8217;) farkl\u0131 Preferences dosyalar\u0131 olu\u015fturmak, y\u00f6netimi kolayla\u015ft\u0131r\u0131r ve performans avantaj\u0131 sa\u011flayabilir.\n<\/div>\n<p>Preferences kullanmaya ba\u015flamadan \u00f6nce, bir Preferences \u00f6rne\u011fi elde etmeniz gerekir. Bu, genellikle bir <code>Context<\/code> veya <code>Ability<\/code> \u00f6rne\u011fi \u00fczerinden yap\u0131l\u0131r ve bir dosya ad\u0131 belirterek belirli bir tercih dosyas\u0131n\u0131 i\u015faret edersiniz. Bu dosya ad\u0131, depolamak istedi\u011finiz ayarlar grubu i\u00e7in benzersiz bir tan\u0131mlay\u0131c\u0131 g\u00f6revi g\u00f6r\u00fcr. A\u015fa\u011f\u0131daki \u00f6rnek, bir Preferences \u00f6rne\u011finin nas\u0131l al\u0131naca\u011f\u0131n\u0131 ve temel veri tiplerinin nas\u0131l depolanaca\u011f\u0131n\u0131 g\u00f6stermektedir. HarmonyOS&#8217;ta bu i\u015flemler genellikle asenkron olarak ger\u00e7ekle\u015ftirilir, bu da UI&#8217;\u0131n donmas\u0131n\u0131 engeller ve daha ak\u0131c\u0131 bir kullan\u0131c\u0131 deneyimi sunar.<\/p>\n<pre><code>\nimport preferences from '@ohos.data.preferences';\nimport common from '@ohos.app.ability.common';\n\nconst PREFS_FILE_NAME = 'user_settings';\n\ninterface UserSettings {\n    themeMode: number; \/\/ 0: System, 1: Light, 2: Dark\n    notificationsEnabled: boolean;\n    username: string;\n    fontSize: number; \/\/ float\n}\n\nclass PreferencesService {\n    private context: common.AbilityContext;\n    private preferences: preferences.Preferences;\n\n    constructor(context: common.AbilityContext) {\n        this.context = context;\n    }\n\n    async loadPreferences(): Promise<void> {\n        try {\n            this.preferences = await preferences.getPreferences(this.context, PREFS_FILE_NAME);\n            console.log('Preferences ba\u015far\u0131yla y\u00fcklendi.');\n        } catch (err) {\n            console.error(<code>Preferences y\u00fcklenirken hata olu\u015ftu: ${JSON.stringify(err)}<\/code>);\n        }\n    }\n\n    getPreferencesInstance(): preferences.Preferences {\n        return this.preferences;\n    }\n\n    async saveSettings(settings: UserSettings): Promise<void> {\n        if (!this.preferences) {\n            console.error('Preferences hen\u00fcz y\u00fcklenmedi.');\n            return;\n        }\n        try {\n            await this.preferences.put('theme_mode', settings.themeMode);\n            await this.preferences.put('notifications_enabled', settings.notificationsEnabled);\n            await this.preferences.put('username', settings.username);\n            await this.preferences.put('font_size', settings.fontSize);\n            await this.preferences.flush(); \/\/ De\u011fi\u015fiklikleri kal\u0131c\u0131 hale getirir\n            console.log('Ayarlar ba\u015far\u0131yla kaydedildi.');\n        } catch (err) {\n            console.error(<code>Ayarlar kaydedilirken hata olu\u015ftu: ${JSON.stringify(err)}<\/code>);\n        }\n    }\n\n    async loadSettings(): Promise<UserSettings> {\n        if (!this.preferences) {\n            console.error('Preferences hen\u00fcz y\u00fcklenmedi. Varsay\u0131lan ayarlar d\u00f6nd\u00fcr\u00fclecek.');\n            return {\n                themeMode: 0,\n                notificationsEnabled: true,\n                username: 'Misafir',\n                fontSize: 16.0\n            };\n        }\n        try {\n            const themeMode = await this.preferences.get('theme_mode', 0) as number;\n            const notificationsEnabled = await this.preferences.get('notifications_enabled', true) as boolean;\n            const username = await this.preferences.get('username', 'Misafir') as string;\n            const fontSize = await this.preferences.get('font_size', 16.0) as number;\n\n            console.log('Ayarlar ba\u015far\u0131yla okundu.');\n            return { themeMode, notificationsEnabled, username, fontSize };\n        } catch (err) {\n            console.error(<code>Ayarlar okunurken hata olu\u015ftu: ${JSON.stringify(err)}<\/code>);\n            return {\n                themeMode: 0,\n                notificationsEnabled: true,\n                username: 'Misafir',\n                fontSize: 16.0\n            };\n        }\n    }\n\n    async deleteSetting(key: string): Promise<void> {\n        if (!this.preferences) return;\n        try {\n            await this.preferences.delete(key);\n            await this.preferences.flush();\n            console.log(<code>Ayarlar ba\u015far\u0131yla silindi: ${key}<\/code>);\n        } catch (err) {\n            console.error(<code>Ayar silinirken hata olu\u015ftu: ${JSON.stringify(err)}<\/code>);\n        }\n    }\n\n    async clearAllSettings(): Promise<void> {\n        if (!this.preferences) return;\n        try {\n            await this.preferences.clear();\n            await this.preferences.flush();\n            console.log('T\u00fcm ayarlar ba\u015far\u0131yla temizlendi.');\n        } catch (err) {\n            console.error(<code>Ayarlar temizlenirken hata olu\u015ftu: ${JSON.stringify(err)}<\/code>);\n        }\n    }\n}\n\/* HarmonyOS Ability'si i\u00e7inden kullan\u0131m \u00f6rne\u011fi\nimport Ability from '@ohos.app.ability.Ability';\nexport default class MyAbility extends Ability {\n    private preferencesService: PreferencesService;\n    onCreate(want, launchParam) {\n        this.preferencesService = new PreferencesService(this.context);\n        this.initSettings();\n    }\n    async initSettings() {\n        await this.preferencesService.loadPreferences();\n        const newSettings: UserSettings = { themeMode: 2, notificationsEnabled: false, username: 'JaneDoe', fontSize: 18.5 };\n        await this.preferencesService.saveSettings(newSettings);\n        const currentSettings = await this.preferencesService.loadSettings();\n        console.log(<code>Mevcut Tema Modu: ${currentSettings.themeMode}<\/code>);\n    }\n}\n*\/\n<\/pre>\n<p><\/code><\/p>\n<p>Yukar\u0131daki kod blo\u011funda, <code>PreferencesService<\/code> ad\u0131nda bir s\u0131n\u0131f olu\u015fturarak Preferences i\u015flemlerini merkezi bir \u015fekilde y\u00f6netiyoruz. <code>loadPreferences()<\/code> metodu ile asenkron olarak bir Preferences \u00f6rne\u011fi al\u0131yor ve daha sonra <code>saveSettings()<\/code> ile verileri kaydediyor, <code>loadSettings()<\/code> ile okuyoruz. <code>put<\/code> metotlar\u0131, anahtar-de\u011fer \u00e7iftlerini Preferences'a yazar. HarmonyOS'ta bu i\u015flemler Promise tabanl\u0131 oldu\u011fu i\u00e7in <code>async\/await<\/code> yap\u0131s\u0131 ile kolayca y\u00f6netilebilir. <code>get<\/code> metotlar\u0131 ise, belirtilen anahtara kar\u015f\u0131l\u0131k gelen de\u011feri okur; e\u011fer anahtar bulunamazsa, ikinci parametre olarak ge\u00e7ilen varsay\u0131lan de\u011feri d\u00f6nd\u00fcr\u00fcr. Bu, uygulaman\u0131z\u0131n ilk kez \u00e7al\u0131\u015ft\u0131r\u0131ld\u0131\u011f\u0131nda veya belirli bir ayar hen\u00fcz kaydedilmedi\u011finde tutarl\u0131 bir davran\u0131\u015f sergilemesini sa\u011flar. Verileri kal\u0131c\u0131 hale getirmek i\u00e7in <code>flush()<\/code> metodunu \u00e7a\u011f\u0131rmak \u00f6nemlidir. Bu metod, bellekteki de\u011fi\u015fiklikleri depolama birimine yazar. Ayr\u0131ca, <code>delete(key)<\/code> metodu ile belirli bir anahtara ait veriyi silerken, <code>clear()<\/code> metodu ile ilgili Preferences dosyas\u0131ndaki t\u00fcm verileri silebilirsiniz. Her iki i\u015flemden sonra da de\u011fi\u015fikliklerin kal\u0131c\u0131 olmas\u0131 i\u00e7in <code>flush()<\/code> metodunu \u00e7a\u011f\u0131rmay\u0131 unutmamak gerekir. Bu temel ad\u0131mlar, HarmonyOS uygulaman\u0131zda kullan\u0131c\u0131 ki\u015fiselle\u015ftirmesini y\u00f6netmek i\u00e7in sa\u011flam bir temel olu\u015fturacakt\u0131r.<\/p>\n<h2 id=\"dinamik-ayarlar\">Uygulaman\u0131z\u0131n Ayarlar\u0131n\u0131 Dinamik Hale Getirmek: Veri G\u00fcncelleme ve \u0130zleme Mekanizmalar\u0131<\/h2>\n<p>Kullan\u0131c\u0131lar\u0131n uygulama i\u00e7indeki ayarlar\u0131 sadece depolamak yeterli de\u011fildir; bu ayarlar de\u011fi\u015fti\u011finde kullan\u0131c\u0131 aray\u00fcz\u00fcn\u00fc (UI) veya uygulaman\u0131n davran\u0131\u015f\u0131n\u0131 an\u0131nda g\u00fcncellemek de b\u00fcy\u00fck \u00f6nem ta\u015f\u0131r. \u00d6rne\u011fin, kullan\u0131c\u0131 koyu temay\u0131 se\u00e7ti\u011finde uygulaman\u0131z\u0131n an\u0131nda koyu tema moduna ge\u00e7mesi beklenir. HarmonyOS Preferences API'si, bu dinamik g\u00fcncellemeleri y\u00f6netmek i\u00e7in olduk\u00e7a kullan\u0131\u015fl\u0131 bir mekanizma sunar: de\u011fi\u015fim dinleyicileri (change listeners). Bu sayede, bir Preference de\u011feri de\u011fi\u015fti\u011finde uygulaman\u0131z\u0131n ilgili b\u00f6l\u00fcmlerini otomatik olarak g\u00fcncelleyebilirsiniz.<\/p>\n<p>Bir Preferences dosyas\u0131ndaki herhangi bir de\u011fer de\u011fi\u015fti\u011finde bilgilendirilmek i\u00e7in <code>preferences.onChangeListener<\/code> metodunu kullanabilirsiniz. Bu metod, bir callback fonksiyonu al\u0131r ve bu fonksiyon, dosya i\u00e7indeki bir anahtar\u0131n de\u011feri de\u011fi\u015fti\u011finde tetiklenir. Bu sayede, de\u011fi\u015fen ayara g\u00f6re uygulaman\u0131z\u0131n UI'\u0131n\u0131 veya i\u00e7 mant\u0131\u011f\u0131n\u0131 g\u00fcncelleyebilirsiniz. \u0130\u015fte bir \u00f6rnek:<\/p>\n<pre><code>\nimport preferences from '@ohos.data.preferences';\nimport common from '@ohos.app.ability.common';\nimport { PREFS_FILE_NAME, PreferencesService, UserSettings } from '.\/PreferencesService';\n\ninterface UIUpdater {\n    updateTheme(themeMode: number): void;\n    updateNotificationsStatus(enabled: boolean): void;\n    updateUsername(username: string): void;\n}\n\nclass SettingsManager {\n    private preferencesService: PreferencesService;\n    private uiUpdater: UIUpdater;\n\n    constructor(context: common.AbilityContext, uiUpdater: UIUpdater) {\n        this.preferencesService = new PreferencesService(context);\n        this.uiUpdater = uiUpdater;\n        this.init();\n    }\n\n    private async init() {\n        await this.preferencesService.loadPreferences();\n        this.setupPreferenceChangeListener();\n        this.applyCurrentSettingsToUI();\n    }\n\n    private setupPreferenceChangeListener(): void {\n        this.preferencesService.getPreferencesInstance().onChangeListener((key: string) => {\n            console.log(<code>Preferences de\u011fi\u015fti: Anahtar -> ${key}<\/code>);\n            this.handlePreferenceChange(key);\n        });\n    }\n\n    private async handlePreferenceChange(key: string): Promise<void> {\n        const currentSettings = await this.preferencesService.loadSettings();\n        switch (key) {\n            case 'theme_mode': this.uiUpdater.updateTheme(currentSettings.themeMode); break;\n            case 'notifications_enabled': this.uiUpdater.updateNotificationsStatus(currentSettings.notificationsEnabled); break;\n            case 'username': this.uiUpdater.updateUsername(currentSettings.username); break;\n            default: console.log(<code>Bilinmeyen anahtar de\u011fi\u015fti: ${key}<\/code>); break;\n        }\n    }\n\n    private async applyCurrentSettingsToUI(): Promise<void> {\n        const currentSettings = await this.preferencesService.loadSettings();\n        this.uiUpdater.updateTheme(currentSettings.themeMode);\n        this.uiUpdater.updateNotificationsStatus(currentSettings.notificationsEnabled);\n        this.uiUpdater.updateUsername(currentSettings.username);\n    }\n\n    removeChangeListener(): void {\n        this.preferencesService.getPreferencesInstance().offChangeListener();\n        console.log('Preferences de\u011fi\u015fim dinleyicisi kald\u0131r\u0131ld\u0131.');\n    }\n}\n\/* UIUpdater aray\u00fcz\u00fcn\u00fc uygulayan bir \u00f6rnek s\u0131n\u0131f (\u00f6rne\u011fin bir @Component i\u00e7inde)\nimport { UIAbilityContext } from '@ohos.app.ability.UIAbility';\n@Entry @Component\nstruct MySettingsPage implements UIUpdater {\n    @State themeMode: number = 0; @State notificationsEnabled: boolean = true; @State username: string = 'Misafir';\n    private settingsManager: SettingsManager; private abilityContext: UIAbilityContext;\n    aboutToAppear() {\n        this.abilityContext = getContext(this) as UIAbilityContext;\n        this.settingsManager = new SettingsManager(this.abilityContext, this);\n    }\n    updateTheme(themeMode: number): void { this.themeMode = themeMode; console.log(<code>UI temas\u0131 g\u00fcncellendi: ${themeMode}<\/code>); }\n    updateNotificationsStatus(enabled: boolean): void { this.notificationsEnabled = enabled; console.log(<code>UI bildirim durumu g\u00fcncellendi: ${enabled}<\/code>); }\n    updateUsername(username: string): void { this.username = username; console.log(<code>UI kullan\u0131c\u0131 ad\u0131 g\u00fcncellendi: ${username}<\/code>); }\n    build() {\n        Column() {\n            Text(<code>Tema Modu: ${this.themeMode === 0 ? &#039;Sistem&#039; : this.themeMode === 1 ? &#039;Ayd\u0131nl\u0131k&#039; : &#039;Karanl\u0131k&#039;}<\/code>).fontSize(20).margin(10)\n            Button('Koyu Tema Yap').onClick(async () => { await this.settingsManager.preferencesService.saveSettings({ ...await this.settingsManager.preferencesService.loadSettings(), themeMode: 2 }); }).margin(10)\n        }.width('100%').height('100%')\n    }\n    aboutToDisappear() { this.settingsManager.removeChangeListener(); }\n}\n*\/\n<\/pre>\n<p><\/code><\/p>\n<p>Bu \u00f6rnekte, <code>SettingsManager<\/code> s\u0131n\u0131f\u0131, <code>PreferencesService<\/code>'i kullanarak ayarlar\u0131 y\u00f6netirken, <code>UIUpdater<\/code> aray\u00fcz\u00fc sayesinde ayarlar de\u011fi\u015fti\u011finde UI komponentlerine bildirim g\u00f6nderir. <code>onChangeListener<\/code> metodu, Preferences dosyas\u0131ndaki herhangi bir de\u011fer de\u011fi\u015fti\u011finde tetiklenir ve de\u011fi\u015fen anahtar\u0131n ad\u0131n\u0131 callback fonksiyonuna iletir. Bu anahtar bilgisiyle, hangi ayar\u0131n de\u011fi\u015fti\u011fini anlay\u0131p sadece o ayarla ilgili UI elementini g\u00fcncellemek m\u00fcmk\u00fcnd\u00fcr. HarmonyOS'ta, bir <code>@Component<\/code> i\u00e7inde <code>@State<\/code> dekorat\u00f6r\u00fc ile tan\u0131mlanm\u0131\u015f de\u011fi\u015fkenler, de\u011ferleri de\u011fi\u015fti\u011finde otomatik olarak UI'\u0131 yeniden render eder, bu da dinamik UI g\u00fcncellemelerini olduk\u00e7a kolayla\u015ft\u0131r\u0131r. Bu yakla\u015f\u0131mla, kullan\u0131c\u0131 ayarlar\u0131nda yap\u0131lan de\u011fi\u015fiklikler an\u0131nda ve etkile\u015fimli bir \u015fekilde uygulamaya yans\u0131t\u0131l\u0131r. Unutulmamal\u0131d\u0131r ki, <code>onChangeListener<\/code>'\u0131 uygulaman\u0131n ya\u015fam d\u00f6ng\u00fcs\u00fcne uygun olarak (\u00f6rne\u011fin, bir <code>Ability<\/code> veya <code>Component<\/code> olu\u015fturuldu\u011funda kaydolup, yok edildi\u011finde kayd\u0131n\u0131 silerek) y\u00f6netmek, bellek s\u0131z\u0131nt\u0131lar\u0131n\u0131 \u00f6nlemek ve uygulaman\u0131n performans\u0131n\u0131 korumak i\u00e7in kritik \u00f6neme sahiptir. Bu mekanizma, kullan\u0131c\u0131 deneyimini zenginle\u015ftiren, yan\u0131t veren ve ak\u0131c\u0131 uygulamalar olu\u015fturman\u0131za olanak tan\u0131r.<\/p>\n<h2 id=\"da\u011f\u0131t\u0131lm\u0131\u015f-preferences\">Da\u011f\u0131t\u0131lm\u0131\u015f Preferences ile \u00c7oklu Cihaz Deneyimi Nas\u0131l Sunulur?<\/h2>\n<p>HarmonyOS'un en \u00e7arp\u0131c\u0131 \u00f6zelliklerinden biri, \"s\u00fcper cihaz\" vizyonuyla sundu\u011fu da\u011f\u0131t\u0131lm\u0131\u015f yeteneklerdir. Bu yetenekler sayesinde, uygulamalar ve veriler farkl\u0131 cihazlar aras\u0131nda (telefon, tablet, ak\u0131ll\u0131 saat, ak\u0131ll\u0131 TV vb.) sorunsuz bir \u015fekilde etkile\u015fim kurabilir. Da\u011f\u0131t\u0131lm\u0131\u015f Preferences (Distributed Preferences), bu da\u011f\u0131t\u0131lm\u0131\u015f ekosistemin \u00f6nemli bir par\u00e7as\u0131d\u0131r ve kullan\u0131c\u0131lar\u0131n ki\u015fiselle\u015ftirilmi\u015f ayarlar\u0131n\u0131 farkl\u0131 HarmonyOS cihazlar\u0131 aras\u0131nda otomatik olarak senkronize etmelerini sa\u011flar. Bu, kullan\u0131c\u0131 i\u00e7in tutarl\u0131 ve kesintisiz bir deneyim sunman\u0131n anahtar\u0131d\u0131r.<\/p>\n<div class=\"expert-tip\">\n  Uzman \u0130pucu: Da\u011f\u0131t\u0131lm\u0131\u015f Preferences, hassas ki\u015fisel veriler i\u00e7in uygun bir depolama y\u00f6ntemi de\u011fildir. \u015eifrelenmemi\u015f PII veya bankac\u0131l\u0131k verilerini burada depolamaktan ka\u00e7\u0131n\u0131n. Bu t\u00fcr veriler i\u00e7in HarmonyOS'un Secure Data Storage gibi daha g\u00fcvenli mekanizmalar\u0131 kullan\u0131lmal\u0131d\u0131r.\n<\/div>\n<p>Temel Preferences API'sine benzer \u015fekilde, Distributed Preferences da anahtar-de\u011fer \u00e7iftleri \u015feklinde veri depolamaya olanak tan\u0131r. Ancak en b\u00fcy\u00fck fark\u0131, depolanan verilerin ayn\u0131 HarmonyOS hesab\u0131na ba\u011fl\u0131 t\u00fcm cihazlar aras\u0131nda otomatik olarak payla\u015f\u0131lmas\u0131 ve senkronize edilmesidir. Bu senkronizasyon, HarmonyOS'un da\u011f\u0131t\u0131lm\u0131\u015f veri y\u00f6netimi mekanizmalar\u0131 taraf\u0131ndan arka planda halledilir, b\u00f6ylece geli\u015ftiriciler karma\u015f\u0131k a\u011f protokolleri veya veri \u00e7ak\u0131\u015fmalar\u0131yla u\u011fra\u015fmak zorunda kalmazlar.<\/p>\n<p>Da\u011f\u0131t\u0131lm\u0131\u015f Preferences kullanmak, temel Preferences kullan\u0131m\u0131na olduk\u00e7a benzerdir. Normal Preferences'ta <code>preferences.getPreferences()<\/code> kullan\u0131rken, da\u011f\u0131t\u0131lm\u0131\u015f \u00f6zellikler i\u00e7in <code>preferences.getDistributedPreferences()<\/code> metodunu \u00e7a\u011f\u0131rman\u0131z gerekir. Bu metot, da\u011f\u0131t\u0131lm\u0131\u015f \u00f6zelliklere sahip bir Preferences \u00f6rne\u011fi d\u00f6nd\u00fcr\u00fcr.<\/p>\n<pre><code>\nimport preferences from '@ohos.data.preferences';\nimport common from '@ohos.app.ability.common';\n\nconst DIST_PREFS_FILE_NAME = 'distributed_user_settings';\n\nclass DistributedPreferencesService {\n    private context: common.AbilityContext;\n    private distributedPreferences: preferences.Preferences;\n\n    constructor(context: common.AbilityContext) {\n        this.context = context;\n    }\n\n    async loadDistributedPreferences(): Promise<void> {\n        try {\n            this.distributedPreferences = await preferences.getDistributedPreferences(this.context, DIST_PREFS_FILE_NAME);\n            console.log('Da\u011f\u0131t\u0131lm\u0131\u015f Preferences ba\u015far\u0131yla y\u00fcklendi.');\n        } catch (err) {\n            console.error(<code>Da\u011f\u0131t\u0131lm\u0131\u015f Preferences y\u00fcklenirken hata olu\u015ftu: ${JSON.stringify(err)}<\/code>);\n        }\n    }\n\n    async saveDistributedSetting(key: string, value: preferences.ValueType): Promise<void> {\n        if (!this.distributedPreferences) { console.error('Da\u011f\u0131t\u0131lm\u0131\u015f Preferences hen\u00fcz y\u00fcklenmedi.'); return; }\n        try {\n            await this.distributedPreferences.put(key, value);\n            await this.distributedPreferences.flush();\n            console.log(<code>Da\u011f\u0131t\u0131lm\u0131\u015f ayar kaydedildi: ${key} -> ${value}<\/code>);\n        } catch (err) {\n            console.error(<code>Da\u011f\u0131t\u0131lm\u0131\u015f ayar kaydedilirken hata olu\u015ftu: ${JSON.stringify(err)}<\/code>);\n        }\n    }\n\n    async getDistributedSetting(key: string, defaultValue: preferences.ValueType): Promise<preferences.ValueType> {\n        if (!this.distributedPreferences) { return defaultValue; }\n        try {\n            const value = await this.distributedPreferences.get(key, defaultValue);\n            console.log(<code>Da\u011f\u0131t\u0131lm\u0131\u015f ayar okundu: ${key} -> ${value}<\/code>);\n            return value;\n        } catch (err) {\n            console.error(<code>Da\u011f\u0131t\u0131lm\u0131\u015f ayar okunurken hata olu\u015ftu: ${JSON.stringify(err)}<\/code>);\n            return defaultValue;\n        }\n    }\n\n    setupDistributedChangeListener(): void {\n        if (!this.distributedPreferences) { console.error('Da\u011f\u0131t\u0131lm\u0131\u015f Preferences hen\u00fcz y\u00fcklendi.'); return; }\n        this.distributedPreferences.onChangeListener((key: string) => {\n            console.log(<code>Da\u011f\u0131t\u0131lm\u0131\u015f Preferences de\u011fi\u015fti: Anahtar -> ${key}<\/code>);\n            this.getDistributedSetting(key, null).then(value => {\n                console.log(<code>De\u011fi\u015fen anahtar (${key}) i\u00e7in yeni de\u011fer: ${value}<\/code>);\n            });\n        });\n    }\n\n    removeDistributedChangeListener(): void {\n        if (this.distributedPreferences) {\n            this.distributedPreferences.offChangeListener();\n            console.log('Da\u011f\u0131t\u0131lm\u0131\u015f Preferences de\u011fi\u015fim dinleyicisi kald\u0131r\u0131ld\u0131.');\n        }\n    }\n}\n\/* Ability i\u00e7inden kullan\u0131m \u00f6rne\u011fi\nimport Ability from '@ohos.app.ability.Ability';\nexport default class MyDistributedAbility extends Ability {\n    private distPreferencesService: DistributedPreferencesService;\n    onCreate(want, launchParam) {\n        super.onCreate(want, launchParam);\n        this.distPreferencesService = new DistributedPreferencesService(this.context);\n        this.initDistributedSettings();\n    }\n    async initDistributedSettings() {\n        await this.distPreferencesService.loadDistributedPreferences();\n        this.distPreferencesService.setupDistributedChangeListener();\n        await this.distPreferencesService.saveDistributedSetting('global_dark_mode', true);\n        const isDarkModeGlobal = await this.distPreferencesService.getDistributedSetting('global_dark_mode', false) as boolean;\n        console.log(<code>Global Koyu Mod Ayar\u0131: ${isDarkModeGlobal}<\/code>);\n    }\n    onDestroy() {\n        this.distPreferencesService.removeDistributedChangeListener();\n        super.onDestroy();\n    }\n}\n*\/\n<\/pre>\n<p><\/code><\/p>\n<p>Yukar\u0131daki kodda, <code>DistributedPreferencesService<\/code> s\u0131n\u0131f\u0131, da\u011f\u0131t\u0131lm\u0131\u015f Preferences'\u0131 y\u00f6netmek i\u00e7in tasarlanm\u0131\u015ft\u0131r. <code>getDistributedPreferences()<\/code> ile bir \u00f6rnek al\u0131nd\u0131ktan sonra, <code>put()<\/code> ve <code>get()<\/code> metotlar\u0131 normal Preferences ile ayn\u0131 \u015fekilde kullan\u0131l\u0131r. \u00d6nemli olan nokta, <code>flush()<\/code> \u00e7a\u011fr\u0131ld\u0131\u011f\u0131nda, veriler sadece yerel olarak kaydedilmekle kalmaz, ayn\u0131 zamanda HarmonyOS'un da\u011f\u0131t\u0131lm\u0131\u015f veri senkronizasyon mekanizmas\u0131 taraf\u0131ndan di\u011fer cihazlara da iletilir. Di\u011fer cihazlardaki uygulamalar, ayn\u0131 <code>DIST_PREFS_FILE_NAME<\/code> ile tan\u0131mlanm\u0131\u015f Distributed Preferences dosyas\u0131n\u0131 dinleyerek bu de\u011fi\u015fikliklerden haberdar olabilir ve kendi UI'lar\u0131n\u0131 veya davran\u0131\u015flar\u0131n\u0131 buna g\u00f6re g\u00fcncelleyebilirler. <code>onChangeListener<\/code>, da\u011f\u0131t\u0131lm\u0131\u015f verideki de\u011fi\u015fiklikleri de izleyebilir, b\u00f6ylece bir cihazda yap\u0131lan bir ayar de\u011fi\u015fikli\u011fi, di\u011fer cihazlarda an\u0131nda yans\u0131t\u0131labilir. Bu, kullan\u0131c\u0131lar\u0131n bir cihazda ayarlad\u0131klar\u0131 tercihin, kulland\u0131klar\u0131 t\u00fcm HarmonyOS cihazlar\u0131nda ge\u00e7erli olmas\u0131n\u0131 sa\u011flayarak ger\u00e7ekten ba\u011fl\u0131 ve ki\u015fiselle\u015ftirilmi\u015f bir ekosistem deneyimi sunar. Da\u011f\u0131t\u0131lm\u0131\u015f Preferences, \u00f6zellikle tema ayarlar\u0131, global bildirim tercihleri veya kullan\u0131c\u0131 profili \u00f6zetleri gibi veriler i\u00e7in m\u00fckemmel bir \u00e7\u00f6z\u00fcmd\u00fcr.<\/p>\n<h2 id=\"performans-ve-g\u00fcvenlik\">Performans ve G\u00fcvenlik \u0130pu\u00e7lar\u0131: Preferences Kullan\u0131rken Nelere Dikkat Etmeliyiz?<\/h2>\n<p>HarmonyOS Preferences, k\u00fc\u00e7\u00fck ve yap\u0131land\u0131r\u0131lmam\u0131\u015f verilerin depolanmas\u0131 i\u00e7in harika bir ara\u00e7 olsa da, her depolama mekanizmas\u0131 gibi onun da kendine \u00f6zg\u00fc performans ve g\u00fcvenlik hususlar\u0131 vard\u0131r. Uygulaman\u0131z\u0131n h\u0131zl\u0131, g\u00fcvenilir ve g\u00fcvenli oldu\u011fundan emin olmak i\u00e7in a\u015fa\u011f\u0131daki ipu\u00e7lar\u0131na dikkat etmek \u00f6nemlidir.<\/p>\n<h3>1. Asenkron \u0130\u015flemler ve UI Ak\u0131c\u0131l\u0131\u011f\u0131:<\/h3>\n<p>Preferences i\u015flemleri (okuma, yazma, silme) disk G\/\u00c7 (I\/O) operasyonlar\u0131d\u0131r. Senkron olarak yap\u0131ld\u0131\u011f\u0131nda, \u00f6zellikle b\u00fcy\u00fck dosyalar veya yo\u011fun i\u015flemler s\u0131ras\u0131nda uygulaman\u0131z\u0131n ana i\u015f par\u00e7ac\u0131\u011f\u0131n\u0131 (UI thread) bloklayarak aray\u00fczde donmalara neden olabilir. HarmonyOS Preferences API'si zaten Promise tabanl\u0131 asenkron metotlar sundu\u011fu i\u00e7in, her zaman <code>async\/await<\/code> yap\u0131s\u0131n\u0131 kullanarak bu i\u015flemleri asenkron olarak y\u00fcr\u00fct\u00fcn. Bu, uygulaman\u0131z\u0131n UI'\u0131n\u0131n her zaman ak\u0131c\u0131 kalmas\u0131n\u0131 sa\u011flar.<\/p>\n<pre><code>\nasync function saveSettingAsync(context: common.AbilityContext, key: string, value: string): Promise<void> {\n    try {\n        const prefs = await preferences.getPreferences(context, 'my_settings');\n        await prefs.put(key, value);\n        await prefs.flush();\n    } catch (err) {\n        console.error(<code>Ayar kaydedilirken hata olu\u015ftu: ${JSON.stringify(err)}<\/code>);\n    }\n}\n<\/pre>\n<p><\/code><\/p>\n<h3>2. <code>flush()<\/code> Metodunun Ak\u0131ll\u0131ca Kullan\u0131m\u0131:<\/h3>\n<p><code>flush()<\/code> metodu, bellekteki de\u011fi\u015fiklikleri diske kal\u0131c\u0131 olarak yaz\u0131lmas\u0131n\u0131 sa\u011flar. Her <code>put()<\/code> i\u015fleminden sonra <code>flush()<\/code> \u00e7a\u011f\u0131rmak performans\u0131 d\u00fc\u015f\u00fcrebilir, \u00e7\u00fcnk\u00fc her seferinde disk G\/\u00c7 i\u015flemi tetiklenir. Birden fazla ayar kaydedecekseniz, t\u00fcm <code>put()<\/code> i\u015flemlerini bitirdikten sonra yaln\u0131zca bir kez <code>flush()<\/code> \u00e7a\u011f\u0131rmak daha verimlidir. HarmonyOS, de\u011fi\u015fiklikleri belirli aral\u0131klarla otomatik olarak yapsa da, uygulaman\u0131z\u0131n kapat\u0131lma an\u0131nda veya kritik verilerin hemen kaydedilmesi gerekti\u011finde <code>flush()<\/code> kullanmak g\u00fcvenli\u011fi art\u0131r\u0131r.<\/p>\n<pre><code>\nawait prefs.put('setting1', 'value1');\nawait prefs.put('setting2', 'value2');\nawait prefs.flush(); \/\/ Sadece bir kez \u00e7a\u011fr\u0131l\u0131r\n<\/pre>\n<p><\/code><\/p>\n<h3>3. Veri Boyut S\u0131n\u0131rlamalar\u0131:<\/h3>\n<p>Preferences, k\u00fc\u00e7\u00fck ve basit veriler i\u00e7in tasarlanm\u0131\u015ft\u0131r. B\u00fcy\u00fck boyutlu JSON nesneleri, resimler, dosyalar veya \u00e7ok say\u0131da anahtar-de\u011fer \u00e7ifti depolamak i\u00e7in uygun de\u011fildir. Bu t\u00fcr veriler i\u00e7in HarmonyOS'un dosya depolama (File I\/O), Distributed Data Service veya ObjectStore gibi daha geli\u015fmi\u015f depolama \u00e7\u00f6z\u00fcmlerini d\u00fc\u015f\u00fcnmelisiniz. Preferences'a \u00e7ok fazla veri depolamak, uygulaman\u0131n ba\u015flang\u0131\u00e7 s\u00fcresini uzatabilir ve okuma\/yazma i\u015flemlerini yava\u015flatabilir.<\/p>\n<h3>4. G\u00fcvenlik ve Hassas Veriler:<\/h3>\n<p>Preferences taraf\u0131ndan depolanan veriler, cihaz\u0131n dosya sisteminde genellikle \u015fifrelenmemi\u015f olarak bulunur (root eri\u015fimi olan cihazlarda kolayca eri\u015filebilir). Bu nedenle, kullan\u0131c\u0131 adlar\u0131, \u015fifreler, API anahtarlar\u0131 veya finansal bilgiler gibi bilgileri do\u011frudan Preferences'ta depolamaktan kesinlikle ka\u00e7\u0131nmal\u0131s\u0131n\u0131z. Hassas veriler i\u00e7in HarmonyOS'un \"Security SDK\" veya \u015fifreli veritabanlar\u0131 gibi daha g\u00fcvenli depolama mekanizmalar\u0131 kullan\u0131lmal\u0131d\u0131r. Da\u011f\u0131t\u0131lm\u0131\u015f Preferences kullan\u0131rken de ayn\u0131 g\u00fcvenlik kurallar\u0131 ge\u00e7erlidir; bu veriler cihazlar aras\u0131nda senkronize edildi\u011fi i\u00e7in daha da dikkatli olunmal\u0131d\u0131r.<\/p>\n<h3>5. Hata Y\u00f6netimi:<\/h3>\n<p>Disk dolu, dosya eri\u015fim izinleri sorunlar\u0131 veya di\u011fer G\/\u00c7 hatalar\u0131 gibi durumlar Preferences i\u015flemlerinde beklenmedik hatalara yol a\u00e7abilir. T\u00fcm Preferences i\u015flemlerini <code>try-catch<\/code> bloklar\u0131 i\u00e7ine alarak bu hatalar\u0131 d\u00fczg\u00fcn bir \u015fekilde y\u00f6netmeli ve kullan\u0131c\u0131ya bilgi vermelisiniz. Bu, uygulaman\u0131z\u0131n kararl\u0131l\u0131\u011f\u0131n\u0131 art\u0131r\u0131r.<\/p>\n<p>Bu ipu\u00e7lar\u0131na dikkat ederek, HarmonyOS Preferences API'sini uygulaman\u0131zda etkili, performansl\u0131 ve g\u00fcvenli bir \u015fekilde kullanabilir, kullan\u0131c\u0131lar\u0131n\u0131za sorunsuz ve ki\u015fiselle\u015ftirilmi\u015f bir deneyim sunabilirsiniz.<\/p>\n<h2 id=\"sonuc\">Sonu\u00e7: HarmonyOS Preferences ile Kullan\u0131c\u0131 Deneyiminizi Nas\u0131l Y\u00fckseltirsiniz?<\/h2>\n<p>Bu makalede, HarmonyOS geli\u015ftiricileri i\u00e7in kullan\u0131c\u0131 ki\u015fiselle\u015ftirilmi\u015f ayarlar\u0131n\u0131 depolaman\u0131n temel ta\u015f\u0131 olan Preferences API'sini derinlemesine inceledik. Kullan\u0131c\u0131lar\u0131n uygulama ile olan ba\u011flar\u0131n\u0131 g\u00fc\u00e7lendiren ki\u015fiselle\u015ftirmenin \u00f6nemini vurgulayarak ba\u015flad\u0131k ve Preferences'\u0131n basit anahtar-de\u011fer depolama yap\u0131s\u0131yla bu ihtiyac\u0131 nas\u0131l kar\u015f\u0131lad\u0131\u011f\u0131n\u0131 g\u00f6sterdik. Temel depolama, okuma ve silme i\u015flemlerini ad\u0131m ad\u0131m kod \u00f6rnekleriyle ele ald\u0131k, b\u00f6ylece s\u0131f\u0131rdan ba\u015flayan bir geli\u015ftiricinin bile kolayca uygulayabilece\u011fi pratik bilgiler sunduk. Ayr\u0131ca, <code>onChangeListener<\/code> mekanizmas\u0131 sayesinde ayarlar\u0131n dinamik olarak nas\u0131l g\u00fcncellenebilece\u011fini ve kullan\u0131c\u0131 aray\u00fcz\u00fcne an\u0131nda nas\u0131l yans\u0131t\u0131labilece\u011fini ke\u015ffettik.<\/p>\n<p>HarmonyOS'un benzersiz da\u011f\u0131t\u0131lm\u0131\u015f yeteneklerinin bir par\u00e7as\u0131 olan Da\u011f\u0131t\u0131lm\u0131\u015f Preferences ile, kullan\u0131c\u0131lar\u0131n ayarlar\u0131n\u0131 birden fazla cihaz aras\u0131nda nas\u0131l senkronize edebilece\u011fimizi \u00f6\u011frendik. Bu \u00f6zellik, modern ve ba\u011flant\u0131l\u0131 bir ekosistemde kesintisiz bir kullan\u0131c\u0131 deneyimi sunman\u0131n kilit noktalar\u0131ndan biridir. Son olarak, Preferences kullan\u0131rken dikkat edilmesi gereken performans ve g\u00fcvenlik ipu\u00e7lar\u0131n\u0131 detayland\u0131rd\u0131k. Asenkron i\u015flemlerin \u00f6nemi, <code>flush()<\/code> metodunun stratejik kullan\u0131m\u0131, veri boyut s\u0131n\u0131rlamalar\u0131 ve \u00f6zellikle hassas verilerin depolanmamas\u0131 gerekti\u011fi gibi kritik konulara de\u011findik. Bu ipu\u00e7lar\u0131, uygulaman\u0131z\u0131n sadece i\u015flevsel de\u011fil, ayn\u0131 zamanda h\u0131zl\u0131, g\u00fcvenilir ve g\u00fcvenli olmas\u0131n\u0131 sa\u011flaman\u0131za yard\u0131mc\u0131 olacakt\u0131r.<\/p>\n<p>\u00d6zetle, HarmonyOS Preferences API'si, kullan\u0131c\u0131lar\u0131n ki\u015fiselle\u015ftirilmi\u015f tercihlerini ve k\u00fc\u00e7\u00fck uygulama ayarlar\u0131n\u0131 y\u00f6netmek i\u00e7in g\u00fc\u00e7l\u00fc, esnek ve kullan\u0131m\u0131 kolay bir \u00e7\u00f6z\u00fcm sunar. Bu ara\u00e7tan en iyi \u015fekilde yararlanarak, kullan\u0131c\u0131lar\u0131n\u0131z\u0131n beklentilerini a\u015fan, onlara \u00f6zel hissettiren ve genel uygulama kalitenizi art\u0131ran HarmonyOS uygulamalar\u0131 geli\u015ftirebilirsiniz. Unutmay\u0131n, kullan\u0131c\u0131 deneyiminin anahtar\u0131, uygulaman\u0131z\u0131 onlar\u0131n parmak u\u00e7lar\u0131nda \u015fekillendirebilme yetene\u011fidir. Preferences ile bu yetene\u011fi HarmonyOS uygulamalar\u0131n\u0131za kazand\u0131r\u0131n ve fark yarat\u0131n!<\/p>\n<h3 id=\"s\u0131k\u00e7a-sorulan-sorular\">S\u0131k\u00e7a Sorulan Sorular<\/h3>\n<dl>\n<dt><strong>1. HarmonyOS Preferences m\u0131, yoksa bir veritaban\u0131 (\u00f6rne\u011fin Realm veya ObjectBox) m\u0131 kullanmal\u0131y\u0131m?<\/strong><\/dt>\n<dd>Preferences, basit anahtar-de\u011fer \u00e7iftleri \u015feklinde k\u00fc\u00e7\u00fck, yap\u0131land\u0131r\u0131lmam\u0131\u015f verileri depolamak i\u00e7in idealdir (\u00f6rn. tema ayarlar\u0131, kullan\u0131c\u0131 ad\u0131). E\u011fer daha b\u00fcy\u00fck veri k\u00fcmeleri, ili\u015fkisel veriler, karma\u015f\u0131k sorgulama ihtiya\u00e7lar\u0131 veya g\u00fc\u00e7l\u00fc veri tutarl\u0131l\u0131\u011f\u0131 gerekiyorsa, bir veritaban\u0131 \u00e7\u00f6z\u00fcm\u00fc (\u00f6rn. HarmonyOS'un Distributed Data Service'i veya \u00fc\u00e7\u00fcnc\u00fc taraf \u00e7\u00f6z\u00fcmler) \u00e7ok daha uygun olacakt\u0131r.<\/dd>\n<dt><strong>2. Preferences verileri uygulaman\u0131n kald\u0131r\u0131lmas\u0131yla silinir mi?<\/strong><\/dt>\n<dd>Evet, varsay\u0131lan olarak Preferences verileri uygulaman\u0131n dahili depolama alan\u0131nda sakland\u0131\u011f\u0131 i\u00e7in, uygulama cihazdan kald\u0131r\u0131ld\u0131\u011f\u0131nda bu veriler de silinir. Bu durum, ki\u015fisel ayarlar\u0131n uygulaman\u0131n \u00f6mr\u00fcyle s\u0131n\u0131rl\u0131 kalmas\u0131n\u0131 sa\u011flar.<\/dd>\n<dt><strong>3. Distributed Preferences kullanmak i\u00e7in \u00f6zel izinler gerekiyor mu?<\/strong><\/dt>\n<dd>Da\u011f\u0131t\u0131lm\u0131\u015f Preferences kullanmak i\u00e7in manifest dosyan\u0131zda <code>ohos.permission.DISTRIBUTED_DATASYNC<\/code> iznini beyan etmeniz gerekir. Ayr\u0131ca, cihazlar\u0131n ayn\u0131 HarmonyOS hesab\u0131yla oturum a\u00e7m\u0131\u015f olmas\u0131 ve a\u011f ba\u011flant\u0131s\u0131n\u0131n bulunmas\u0131 senkronizasyon i\u00e7in zorunludur.<\/dd>\n<dt><strong>4. Preferences verilerini farkl\u0131 uygulamalar aras\u0131nda payla\u015fabilir miyim?<\/strong><\/dt>\n<dd>Hay\u0131r, Preferences verileri uygulama \u00f6zelindedir ve varsay\u0131lan olarak di\u011fer uygulamalar taraf\u0131ndan do\u011frudan eri\u015filemez. Uygulamalar aras\u0131 veri payla\u015f\u0131m\u0131 i\u00e7in HarmonyOS'un Distributed Data Service, Data Ability veya Common Event Service gibi daha geli\u015fmi\u015f payla\u015f\u0131m mekanizmalar\u0131n\u0131 kullanman\u0131z gerekir.<\/dd>\n<dt><strong>5. Preferences'a ne kadar veri depolayabilirim? Bir s\u0131n\u0131r\u0131 var m\u0131?<\/strong><\/dt>\n<dd>Preferences k\u00fc\u00e7\u00fck boyutlu veriler i\u00e7in tasarlanm\u0131\u015ft\u0131r ve performans\u0131 art\u0131rmak ad\u0131na genellikle birka\u00e7 y\u00fcz KB'\u0131 ge\u00e7memesi \u00f6nerilir. Daha b\u00fcy\u00fck veriler depoland\u0131\u011f\u0131nda, okuma\/yazma s\u00fcreleri artabilir ve uygulama performans\u0131 olumsuz etkilenebilir. Her bir dosya i\u00e7in yakla\u015f\u0131k 1-2 MB gibi bir \u00fcst limit d\u00fc\u015f\u00fcn\u00fclebilir, ancak bu, sistem kaynaklar\u0131na ve cihaz modeline g\u00f6re de\u011fi\u015febilir.<\/dd>\n<\/dl>\n<style>\n  body {\n    font-family: Arial, sans-serif;\n    line-height: 1.6;\n    color: #333;\n    max-width: 900px;\n    margin: 0 auto;\n    padding: 20px;\n  }\n  h2, h3 {\n    color: #2c3e50;\n    margin-top: 30px;\n    margin-bottom: 15px;\n  }\n  pre {\n    background-color: #f4f4f4;\n    border: 1px solid #ddd;\n    border-left: 5px solid #007bff;\n    color: #444;\n    page-break-inside: avoid;\n    font-family: monospace;\n    font-size: 15px;\n    line-height: 1.6;\n    margin-bottom: 1.6em;\n    max-width: 100%;\n    overflow: auto;\n    padding: 1em 1.5em;\n    display: block;\n    word-wrap: break-word;\n  }\n  code {\n    font-family: monospace;\n    background-color: #f9f2f4;\n    color: #c7254e;\n    padding: 2px 4px;\n    border-radius: 4px;\n  }\n  p {\n    margin-bottom: 1em;\n  }\n  ul, ol, dl {\n    margin-bottom: 1em;\n  }\n  ul li, ol li {\n    margin-bottom: 0.5em;\n  }\n  .expert-tip {\n    background-color: #e6f7ff;\n    border-left: 4px solid #007bff;\n    padding: 15px;\n    margin: 20px 0;\n    font-style: italic;\n    color: #31708f;\n    border-radius: 4px;\n  }\n  dt {\n    font-weight: bold;\n    margin-top: 15px;\n  }\n  dd {\n    margin-left: 20px;\n    margin-bottom: 10px;\n  }<\/p>\n<p>  \/* Mobil uyumluluk i\u00e7in medya sorgusu *\/\n  @media (max-width: 768px) {\n    body {\n      padding: 10px;\n      font-size: 15px;\n    }\n    h2 {\n      font-size: 22px;\n    }\n    h3 {\n      font-size: 18px;\n    }\n    pre, code {\n      font-size: 14px;\n    }\n  }\n<\/style>\n","protected":false},"excerpt":{"rendered":"HarmonyOS uygulamalar\u0131n\u0131zda kullan\u0131c\u0131lar\u0131n ki\u015fisel ayarlar\u0131n\u0131 g\u00fcvenle ve etkili bir \u015fekilde nas\u0131l depolayaca\u011f\u0131n\u0131z\u0131 merak m\u0131 ediyorsunuz? Preferences API ile&hellip;","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"csco_page_header_type":"","csco_page_load_nextpost":"","csco_page_subscribe_form":"","csco_page_contact_form":"","footnotes":""},"categories":[1],"tags":[],"class_list":{"0":"post-33795","1":"post","2":"type-post","3":"status-publish","4":"format-standard","6":"category-genel","7":"cs-entry","8":"cs-video-wrap"},"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v20.5 (Yoast SEO v25.3.1) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>HarmonyOS Preferences ile Ki\u015fiselle\u015ftirilmi\u015f Ayar Depolama Rehberi<\/title>\n<meta name=\"description\" content=\"HarmonyOS uygulamalar\u0131n\u0131zda kullan\u0131c\u0131lar\u0131n ki\u015fisel ayarlar\u0131n\u0131 g\u00fcvenle ve etkili bir \u015fekilde nas\u0131l depolayaca\u011f\u0131n\u0131z\u0131 merak m\u0131 ediyorsunuz? Preferences API ile cihazlar aras\u0131 senkronizasyon ve veri b\u00fct\u00fcnl\u00fc\u011f\u00fcn\u00fc sa\u011flay\u0131n, kullan\u0131c\u0131 deneyimini zirveye ta\u015f\u0131y\u0131n.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/fatihsoysal.com\/blog\/harmonyos-preferences-ile-kisisellestirilmis-ayar-depolama-rehberi\/\" \/>\n<meta property=\"og:locale\" content=\"tr_TR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"HarmonyOS Preferences ile Ki\u015fiselle\u015ftirilmi\u015f Ayar Depolama Rehberi\" \/>\n<meta property=\"og:description\" content=\"HarmonyOS uygulamalar\u0131n\u0131zda kullan\u0131c\u0131lar\u0131n ki\u015fisel ayarlar\u0131n\u0131 g\u00fcvenle ve etkili bir \u015fekilde nas\u0131l depolayaca\u011f\u0131n\u0131z\u0131 merak m\u0131 ediyorsunuz? Preferences API ile cihazlar aras\u0131 senkronizasyon ve veri b\u00fct\u00fcnl\u00fc\u011f\u00fcn\u00fc sa\u011flay\u0131n, kullan\u0131c\u0131 deneyimini zirveye ta\u015f\u0131y\u0131n.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/fatihsoysal.com\/blog\/harmonyos-preferences-ile-kisisellestirilmis-ayar-depolama-rehberi\/\" \/>\n<meta property=\"og:site_name\" content=\"Kodlar\u0131n Gizemli D\u00fcnyas\u0131\" \/>\n<meta property=\"article:published_time\" content=\"2025-11-07T02:31:53+00:00\" \/>\n<meta name=\"author\" content=\"Fatih Soysal\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Yazan:\" \/>\n\t<meta name=\"twitter:data1\" content=\"Fatih Soysal\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tahmini okuma s\u00fcresi\" \/>\n\t<meta name=\"twitter:data2\" content=\"23 dakika\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/harmonyos-preferences-ile-kisisellestirilmis-ayar-depolama-rehberi\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/harmonyos-preferences-ile-kisisellestirilmis-ayar-depolama-rehberi\/\"},\"author\":{\"name\":\"Fatih Soysal\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"headline\":\"HarmonyOS Preferences ile Ki\u015fiselle\u015ftirilmi\u015f Ayar Depolama Rehberi\",\"datePublished\":\"2025-11-07T02:31:53+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/harmonyos-preferences-ile-kisisellestirilmis-ayar-depolama-rehberi\/\"},\"wordCount\":3340,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/harmonyos-preferences-ile-kisisellestirilmis-ayar-depolama-rehberi\/#respond\"]}],\"copyrightYear\":\"2025\",\"copyrightHolder\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/harmonyos-preferences-ile-kisisellestirilmis-ayar-depolama-rehberi\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/harmonyos-preferences-ile-kisisellestirilmis-ayar-depolama-rehberi\/\",\"name\":\"HarmonyOS Preferences ile Ki\u015fiselle\u015ftirilmi\u015f Ayar Depolama Rehberi\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\"},\"datePublished\":\"2025-11-07T02:31:53+00:00\",\"description\":\"HarmonyOS uygulamalar\u0131n\u0131zda kullan\u0131c\u0131lar\u0131n ki\u015fisel ayarlar\u0131n\u0131 g\u00fcvenle ve etkili bir \u015fekilde nas\u0131l depolayaca\u011f\u0131n\u0131z\u0131 merak m\u0131 ediyorsunuz? Preferences API ile cihazlar aras\u0131 senkronizasyon ve veri b\u00fct\u00fcnl\u00fc\u011f\u00fcn\u00fc sa\u011flay\u0131n, kullan\u0131c\u0131 deneyimini zirveye ta\u015f\u0131y\u0131n.\",\"breadcrumb\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/harmonyos-preferences-ile-kisisellestirilmis-ayar-depolama-rehberi\/#breadcrumb\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/harmonyos-preferences-ile-kisisellestirilmis-ayar-depolama-rehberi\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/harmonyos-preferences-ile-kisisellestirilmis-ayar-depolama-rehberi\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Anasayfa\",\"item\":\"https:\/\/fatihsoysal.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"HarmonyOS Preferences ile Ki\u015fiselle\u015ftirilmi\u015f Ayar Depolama Rehberi\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/\",\"name\":\"Fatihsoysal.com\",\"description\":\"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim\",\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"tr\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\",\"name\":\"Fatih Soysal\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"tr\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"contentUrl\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"width\":512,\"height\":512,\"caption\":\"Fatih Soysal\"},\"logo\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\"},\"description\":\"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"HarmonyOS Preferences ile Ki\u015fiselle\u015ftirilmi\u015f Ayar Depolama Rehberi","description":"HarmonyOS uygulamalar\u0131n\u0131zda kullan\u0131c\u0131lar\u0131n ki\u015fisel ayarlar\u0131n\u0131 g\u00fcvenle ve etkili bir \u015fekilde nas\u0131l depolayaca\u011f\u0131n\u0131z\u0131 merak m\u0131 ediyorsunuz? Preferences API ile cihazlar aras\u0131 senkronizasyon ve veri b\u00fct\u00fcnl\u00fc\u011f\u00fcn\u00fc sa\u011flay\u0131n, kullan\u0131c\u0131 deneyimini zirveye ta\u015f\u0131y\u0131n.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/fatihsoysal.com\/blog\/harmonyos-preferences-ile-kisisellestirilmis-ayar-depolama-rehberi\/","og_locale":"tr_TR","og_type":"article","og_title":"HarmonyOS Preferences ile Ki\u015fiselle\u015ftirilmi\u015f Ayar Depolama Rehberi","og_description":"HarmonyOS uygulamalar\u0131n\u0131zda kullan\u0131c\u0131lar\u0131n ki\u015fisel ayarlar\u0131n\u0131 g\u00fcvenle ve etkili bir \u015fekilde nas\u0131l depolayaca\u011f\u0131n\u0131z\u0131 merak m\u0131 ediyorsunuz? Preferences API ile cihazlar aras\u0131 senkronizasyon ve veri b\u00fct\u00fcnl\u00fc\u011f\u00fcn\u00fc sa\u011flay\u0131n, kullan\u0131c\u0131 deneyimini zirveye ta\u015f\u0131y\u0131n.","og_url":"https:\/\/fatihsoysal.com\/blog\/harmonyos-preferences-ile-kisisellestirilmis-ayar-depolama-rehberi\/","og_site_name":"Kodlar\u0131n Gizemli D\u00fcnyas\u0131","article_published_time":"2025-11-07T02:31:53+00:00","author":"Fatih Soysal","twitter_card":"summary_large_image","twitter_misc":{"Yazan:":"Fatih Soysal","Tahmini okuma s\u00fcresi":"23 dakika"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/fatihsoysal.com\/blog\/harmonyos-preferences-ile-kisisellestirilmis-ayar-depolama-rehberi\/#article","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/harmonyos-preferences-ile-kisisellestirilmis-ayar-depolama-rehberi\/"},"author":{"name":"Fatih Soysal","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"headline":"HarmonyOS Preferences ile Ki\u015fiselle\u015ftirilmi\u015f Ayar Depolama Rehberi","datePublished":"2025-11-07T02:31:53+00:00","mainEntityOfPage":{"@id":"https:\/\/fatihsoysal.com\/blog\/harmonyos-preferences-ile-kisisellestirilmis-ayar-depolama-rehberi\/"},"wordCount":3340,"commentCount":0,"publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"inLanguage":"tr","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/fatihsoysal.com\/blog\/harmonyos-preferences-ile-kisisellestirilmis-ayar-depolama-rehberi\/#respond"]}],"copyrightYear":"2025","copyrightHolder":{"@id":"https:\/\/fatihsoysal.com\/blog\/#organization"}},{"@type":"WebPage","@id":"https:\/\/fatihsoysal.com\/blog\/harmonyos-preferences-ile-kisisellestirilmis-ayar-depolama-rehberi\/","url":"https:\/\/fatihsoysal.com\/blog\/harmonyos-preferences-ile-kisisellestirilmis-ayar-depolama-rehberi\/","name":"HarmonyOS Preferences ile Ki\u015fiselle\u015ftirilmi\u015f Ayar Depolama Rehberi","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/#website"},"datePublished":"2025-11-07T02:31:53+00:00","description":"HarmonyOS uygulamalar\u0131n\u0131zda kullan\u0131c\u0131lar\u0131n ki\u015fisel ayarlar\u0131n\u0131 g\u00fcvenle ve etkili bir \u015fekilde nas\u0131l depolayaca\u011f\u0131n\u0131z\u0131 merak m\u0131 ediyorsunuz? Preferences API ile cihazlar aras\u0131 senkronizasyon ve veri b\u00fct\u00fcnl\u00fc\u011f\u00fcn\u00fc sa\u011flay\u0131n, kullan\u0131c\u0131 deneyimini zirveye ta\u015f\u0131y\u0131n.","breadcrumb":{"@id":"https:\/\/fatihsoysal.com\/blog\/harmonyos-preferences-ile-kisisellestirilmis-ayar-depolama-rehberi\/#breadcrumb"},"inLanguage":"tr","potentialAction":[{"@type":"ReadAction","target":["https:\/\/fatihsoysal.com\/blog\/harmonyos-preferences-ile-kisisellestirilmis-ayar-depolama-rehberi\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/fatihsoysal.com\/blog\/harmonyos-preferences-ile-kisisellestirilmis-ayar-depolama-rehberi\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Anasayfa","item":"https:\/\/fatihsoysal.com\/blog\/"},{"@type":"ListItem","position":2,"name":"HarmonyOS Preferences ile Ki\u015fiselle\u015ftirilmi\u015f Ayar Depolama Rehberi"}]},{"@type":"WebSite","@id":"https:\/\/fatihsoysal.com\/blog\/#website","url":"https:\/\/fatihsoysal.com\/blog\/","name":"Fatihsoysal.com","description":"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim","publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"tr"},{"@type":["Person","Organization"],"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1","name":"Fatih Soysal","image":{"@type":"ImageObject","inLanguage":"tr","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","contentUrl":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","width":512,"height":512,"caption":"Fatih Soysal"},"logo":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/"},"description":"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.","url":"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/"}]}},"yoast_meta":{"yoast_wpseo_title":"","yoast_wpseo_metadesc":"","yoast_wpseo_canonical":""},"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/33795","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/comments?post=33795"}],"version-history":[{"count":0,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/33795\/revisions"}],"wp:attachment":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/media?parent=33795"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/categories?post=33795"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/tags?post=33795"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}