[{"data":1,"prerenderedAt":611},["ShallowReactive",2],{"navigation":3,"\u002Fplatforms\u002Fios":116,"\u002Fplatforms\u002Fios-surround":606},[4,27,61,82,112],{"title":5,"icon":6,"path":7,"stem":8,"children":9,"page":26},"Getting started","i-lucide-rocket","\u002Fgetting-started","1.getting-started",[10,14,18,22],{"title":11,"path":12,"stem":13},"Introduction","\u002Fgetting-started\u002Fintroduction","1.getting-started\u002F1.introduction",{"title":15,"path":16,"stem":17},"Installation","\u002Fgetting-started\u002Finstallation","1.getting-started\u002F2.installation",{"title":19,"path":20,"stem":21},"Quick start","\u002Fgetting-started\u002Fquick-start","1.getting-started\u002F3.quick-start",{"title":23,"path":24,"stem":25},"Development","\u002Fgetting-started\u002Fdevelopment","1.getting-started\u002F4.development",false,{"title":28,"icon":29,"path":30,"stem":31,"children":32,"page":26},"Guides","i-lucide-book-open","\u002Fguides","2.guides",[33,37,41,45,49,53,57],{"title":34,"path":35,"stem":36},"Sessions and store","\u002Fguides\u002Fsessions","2.guides\u002F1.sessions",{"title":38,"path":39,"stem":40},"Vault and procedures","\u002Fguides\u002Fvault","2.guides\u002F2.vault",{"title":42,"path":43,"stem":44},"Password accounts","\u002Fguides\u002Fpasswords","2.guides\u002F3.passwords",{"title":46,"path":47,"stem":48},"Rust backend","\u002Fguides\u002Frust","2.guides\u002F4.rust",{"title":50,"path":51,"stem":52},"Security notes","\u002Fguides\u002Fsecurity","2.guides\u002F5.security",{"title":54,"path":55,"stem":56},"Permissions","\u002Fguides\u002Fpermissions","2.guides\u002F6.permissions",{"title":58,"path":59,"stem":60},"Coming from Stronghold","\u002Fguides\u002Fstronghold","2.guides\u002F7.stronghold",{"title":62,"icon":63,"path":64,"stem":65,"children":66,"page":26},"API reference","i-lucide-file-code","\u002Freference","3.reference",[67,71,75,79],{"title":68,"path":69,"stem":70},"JavaScript API","\u002Freference\u002Fjavascript-api","3.reference\u002F1.javascript-api",{"title":72,"path":73,"stem":74},"Types","\u002Freference\u002Ftypes","3.reference\u002F2.types",{"title":76,"path":77,"stem":78},"Tauri commands","\u002Freference\u002Fcommands","3.reference\u002F3.commands",{"title":54,"path":80,"stem":81},"\u002Freference\u002Fpermissions","3.reference\u002F4.permissions",{"title":83,"icon":84,"path":85,"stem":86,"children":87,"page":26},"Platforms","i-lucide-monitor-smartphone","\u002Fplatforms","4.platforms",[88,92,96,100,104,108],{"title":89,"path":90,"stem":91},"Overview","\u002Fplatforms\u002Foverview","4.platforms\u002F1.overview",{"title":93,"path":94,"stem":95},"macOS","\u002Fplatforms\u002Fmacos","4.platforms\u002F2.macos",{"title":97,"path":98,"stem":99},"Windows","\u002Fplatforms\u002Fwindows","4.platforms\u002F3.windows",{"title":101,"path":102,"stem":103},"Linux","\u002Fplatforms\u002Flinux","4.platforms\u002F4.linux",{"title":105,"path":106,"stem":107},"Android","\u002Fplatforms\u002Fandroid","4.platforms\u002F5.android",{"title":109,"path":110,"stem":111},"iOS","\u002Fplatforms\u002Fios","4.platforms\u002F6.ios",{"title":113,"path":114,"stem":115},"Changelog","\u002Fchangelog","9.changelog",{"id":117,"title":109,"body":118,"description":600,"extension":601,"generated":26,"links":602,"meta":603,"navigation":266,"path":110,"seo":604,"stem":111,"__hash__":605},"docs\u002F4.platforms\u002F6.ios.md",{"type":119,"value":120,"toc":595},"minimark",[121,139,144,151,203,207,218,430,516,527,541,545,551,591],[122,123,124,125,129,130,134,135,138],"p",{},"Entries go to the ",[126,127,128],"strong",{},"data-protection keychain"," (",[131,132,133],"code",{},"apple-native-keyring-store",", ",[131,136,137],{},"protected"," feature).",[140,141,143],"h2",{"id":142},"the-app-must-be-signed","The app must be signed",[122,145,146,147,150],{},"The data-protection keychain needs the ",[131,148,149],{},"application-identifier"," entitlement, which only a signed app\nhas.",[152,153,154,167],"table",{},[155,156,157],"thead",{},[158,159,160,164],"tr",{},[161,162,163],"th",{},"Build",[161,165,166],{},"Works",[168,169,170,179,189],"tbody",{},[158,171,172,176],{},[173,174,175],"td",{},"Device builds",[173,177,178],{},"yes",[158,180,181,187],{},[173,182,183,186],{},[131,184,185],{},"tauri ios dev"," (signs with \"Sign to Run Locally\")",[173,188,178],{},[158,190,191,197],{},[173,192,193,196],{},[131,194,195],{},"tauri ios build --target aarch64-sim"," (unsigned)",[173,198,199,200],{},"no: every call fails with ",[131,201,202],{},"A required entitlement is not present",[140,204,206],{"id":205},"write-policy","Write policy",[122,208,209,210,213,214,217],{},"New entries are written with the ",[131,211,212],{},"AfterFirstUnlock"," policy by default (since 0.2.0): background tasks\ncan read them after the first unlock since boot, even when the screen is locked again. Choose another\npolicy when you build the plugin or a standalone store. Both setters exist only when compiling for iOS,\nso guard them with ",[131,215,216],{},"#[cfg(target_os = \"ios\")]"," in cross-platform code:",[219,220,225],"pre",{"className":221,"code":222,"language":223,"meta":224,"style":224},"language-rust shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","use tauri_plugin_keyring_store::{Builder, KeyringStore, WriteAccessibility};\n\n#[cfg(target_os = \"ios\")]\nlet plugin = Builder::new()\n    .ios_write_accessibility(WriteAccessibility::WhenUnlocked)\n    .build();\n\n#[cfg(target_os = \"ios\")]\nlet store = KeyringStore::new(\"com.example.app\")\n    .with_write_accessibility(WriteAccessibility::WhenUnlocked);\n","rust","",[131,226,227,261,268,300,325,347,358,363,384,411],{"__ignoreMap":224},[228,229,232,236,240,244,247,250,253,255,258],"span",{"class":230,"line":231},"line",1,[228,233,235],{"class":234},"sbssI","use",[228,237,239],{"class":238},"sBMFI"," tauri_plugin_keyring_store",[228,241,243],{"class":242},"sMK4o","::{",[228,245,246],{"class":238},"Builder",[228,248,249],{"class":242},",",[228,251,252],{"class":238}," KeyringStore",[228,254,249],{"class":242},[228,256,257],{"class":238}," WriteAccessibility",[228,259,260],{"class":242},"};\n",[228,262,264],{"class":230,"line":263},2,[228,265,267],{"emptyLinePlaceholder":266},true,"\n",[228,269,271,274,278,281,284,287,290,294,297],{"class":230,"line":270},3,[228,272,273],{"class":242},"#[",[228,275,277],{"class":276},"sTEyZ","cfg",[228,279,280],{"class":242},"(",[228,282,283],{"class":276},"target_os ",[228,285,286],{"class":242},"=",[228,288,289],{"class":242}," \"",[228,291,293],{"class":292},"sfazB","ios",[228,295,296],{"class":242},"\"",[228,298,299],{"class":242},")]\n",[228,301,303,307,310,312,315,318,322],{"class":230,"line":302},4,[228,304,306],{"class":305},"spNyl","let",[228,308,309],{"class":276}," plugin ",[228,311,286],{"class":242},[228,313,314],{"class":238}," Builder",[228,316,317],{"class":242},"::",[228,319,321],{"class":320},"s2Zo4","new",[228,323,324],{"class":242},"()\n",[228,326,328,331,334,336,339,341,344],{"class":230,"line":327},5,[228,329,330],{"class":242},"    .",[228,332,333],{"class":320},"ios_write_accessibility",[228,335,280],{"class":242},[228,337,338],{"class":238},"WriteAccessibility",[228,340,317],{"class":242},[228,342,343],{"class":238},"WhenUnlocked",[228,345,346],{"class":242},")\n",[228,348,350,352,355],{"class":230,"line":349},6,[228,351,330],{"class":242},[228,353,354],{"class":320},"build",[228,356,357],{"class":242},"();\n",[228,359,361],{"class":230,"line":360},7,[228,362,267],{"emptyLinePlaceholder":266},[228,364,366,368,370,372,374,376,378,380,382],{"class":230,"line":365},8,[228,367,273],{"class":242},[228,369,277],{"class":276},[228,371,280],{"class":242},[228,373,283],{"class":276},[228,375,286],{"class":242},[228,377,289],{"class":242},[228,379,293],{"class":292},[228,381,296],{"class":242},[228,383,299],{"class":242},[228,385,387,389,392,394,396,398,400,402,404,407,409],{"class":230,"line":386},9,[228,388,306],{"class":305},[228,390,391],{"class":276}," store ",[228,393,286],{"class":242},[228,395,252],{"class":238},[228,397,317],{"class":242},[228,399,321],{"class":320},[228,401,280],{"class":242},[228,403,296],{"class":242},[228,405,406],{"class":292},"com.example.app",[228,408,296],{"class":242},[228,410,346],{"class":242},[228,412,414,416,419,421,423,425,427],{"class":230,"line":413},10,[228,415,330],{"class":242},[228,417,418],{"class":320},"with_write_accessibility",[228,420,280],{"class":242},[228,422,338],{"class":238},[228,424,317],{"class":242},[228,426,343],{"class":238},[228,428,429],{"class":242},");\n",[152,431,432,443],{},[155,433,434],{},[158,435,436,440],{},[161,437,438],{},[131,439,338],{},[161,441,442],{},"Access policy",[168,444,445,457,468,480,492,504],{},[158,446,447,452],{},[173,448,449,451],{},[131,450,212],{}," (default)",[173,453,454],{},[131,455,456],{},"after-first-unlock",[158,458,459,463],{},[173,460,461],{},[131,462,343],{},[173,464,465],{},[131,466,467],{},"when-unlocked",[158,469,470,475],{},[173,471,472],{},[131,473,474],{},"AfterFirstUnlockThisDeviceOnly",[173,476,477],{},[131,478,479],{},"after-first-unlock-this-device-only",[158,481,482,487],{},[173,483,484],{},[131,485,486],{},"WhenUnlockedThisDeviceOnly",[173,488,489],{},[131,490,491],{},"when-unlocked-this-device-only",[158,493,494,499],{},[173,495,496],{},[131,497,498],{},"WhenPasscodeSetThisDeviceOnly",[173,500,501],{},[131,502,503],{},"when-passcode-set-this-device-only",[158,505,506,511],{},[173,507,508],{},[131,509,510],{},"RequireUserPresence",[173,512,513],{},[131,514,515],{},"require-user-presence",[122,517,518,519,526],{},"The policy applies to writes only; reads find the entry whatever its policy. A handle made with\n",[520,521,523],"a",{"href":522},"\u002Fguides\u002Frust#custom-credential-store",[131,524,525],{},"with_store"," ignores it.",[122,528,529,530,532,533,536,537,540],{},"Entries written before 0.2.0 may still use ",[131,531,343],{}," until they are written again\n(",[131,534,535],{},"set_password"," \u002F ",[131,538,539],{},"set_bytes","). There is no bulk re-key command.",[140,542,544],{"id":543},"locked-device","Locked device",[122,546,547,548,550],{},"When the entry's policy does not allow access (e.g. ",[131,549,343],{}," and the device is locked):",[552,553,554,566],"ul",{},[555,556,557,558,561,562,565],"li",{},"Normal reads fail with ",[131,559,560],{},"Error::KeychainLocked","; over IPC the message is\n",[131,563,564],{},"keychain locked or protected data unavailable",".",[555,567,568,569,572,573,576,577,580,581,536,584,587,588,565],{},"From Rust, ",[131,570,571],{},"availability()"," probes the keychain and returns ",[131,574,575],{},"Locked",", and the ",[131,578,579],{},"*_for_background","\nhelpers return ",[131,582,583],{},"Ok(None)",[131,585,586],{},"Ok(false)"," instead of an error. See\n",[520,589,46],{"href":590},"\u002Fguides\u002Frust#locked-device-and-background-reads",[592,593,594],"style",{},"html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":224,"searchDepth":263,"depth":270,"links":596},[597,598,599],{"id":142,"depth":263,"text":143},{"id":205,"depth":263,"text":206},{"id":543,"depth":263,"text":544},"Data-protection keychain, signing, the write policy, and reading secrets while the device is locked.","md",null,{},{"title":109,"description":600},"bFQDP7qH7M29tRy9vFEJRFmOyBBwdPZmhAPUl2PkwS0",[607,609],{"title":105,"path":106,"stem":107,"description":608,"children":-1},"Android keystore storage through android-native-keyring-store; no setup needed.",{"title":113,"path":114,"stem":115,"description":610,"children":-1},"All notable changes to tauri-plugin-keyring-store and tauri-plugin-keyring-store-api.",1794215489773]