Apache Cordova
  1. Apache Cordova
  2. CB-330

localStorage / SQLDatabase no longer persistent after iOS 5.01 Update

    Details

    • Type: Bug Bug
    • Status: Resolved
    • Priority: Blocker Blocker
    • Resolution: Fixed
    • Affects Version/s: 1.3.0, 1.4.0, 1.5.0
    • Fix Version/s: 1.6.0
    • Component/s: iOS
    • Environment:

      iOS 5.01
      PhoneGap (Any version)
      Xcode 4
      Build.PhoneGap

      Description

      Dear Dev

      WebKit data (localstorage or local SQLite) are now stored in Library/ Caches folder (instead of Library/WebKit folder). This is a big problem for all apps using UIWebView and storing user data, because they will no longer be backed up and may be deleted. There are a lot of apps using localstorage or SQLite as a critical feature.

      The SQLite database gets deleted because the database is saved in a location on the filesystem which Apple does not consider to contain persistent data.

      Steps to Reproduce:

      In a UIWebView, create a new DB or use localStorage with JavaScript.
      You can see that the WebKit data is now stored in Library/Caches :

      Expected Results:

      We should at least specify the directory of WebKit data (and to set it
      to Documents/ for critical data)

      Actual Results:

      The WebKit data are stored in Library/Caches folder, and can be
      deleted

      Regression:
      To migrate database location from Library/Caches to some other location such as Documents.


      Ref: http://developer.apple.com/icloud/documentation/data-storage/
      https://devforums.apple.com/thread/137882?start=0&tstart=0

      1. LocalStorageTest.zip
        904 kB
        Amirudin Bin Mohamed Ghani
      2. Directory-Structure-CB-330.zip
        452 kB
        Shazron Abdullah
      3. iOS WebKit Database Locations.txt
        0.6 kB
        Shazron Abdullah
      4. README.txt
        5 kB
        Shazron Abdullah
      5. CDVLocalStoragePlugin.zip
        20 kB
        Shazron Abdullah
      6. CDVLocalStorageDiagnostics.zip
        4 kB
        Shazron Abdullah

        Issue Links

          Activity

          Amirudin Bin Mohamed Ghani created issue -
          Shazron Abdullah made changes -
          Field Original Value New Value
          Fix Version/s 1.6.0 [ 12319548 ]
          Shazron Abdullah made changes -
          Link This issue relates to CB-347 [ CB-347 ]
          Shazron Abdullah made changes -
          Attachment CDVLocalStoragePlugin.zip [ 12518806 ]
          Shazron Abdullah made changes -
          Attachment CDVLocalStoragePlugin.zip [ 12518807 ]
          Shazron Abdullah made changes -
          Attachment CDVLocalStoragePlugin.zip [ 12518806 ]
          Amirudin Bin Mohamed Ghani made changes -
          Attachment LocalStorageTest.zip [ 12518876 ]
          Shazron Abdullah made changes -
          Attachment Directory-Structure-CB-330.zip [ 12518925 ]
          Shazron Abdullah made changes -
          Attachment iOS WebKit Database Locations.txt [ 12518951 ]
          Shazron Abdullah made changes -
          Attachment CDVLocalStoragePlugin.zip [ 12519113 ]
          Shazron Abdullah made changes -
          Attachment CDVLocalStoragePlugin.zip [ 12518807 ]
          Shazron Abdullah made changes -
          Attachment CDVLocalStoragePlugin.zip [ 12519129 ]
          Shazron Abdullah made changes -
          Attachment CDVLocalStoragePlugin.zip [ 12519113 ]
          Shazron Abdullah made changes -
          Status Open [ 1 ] Resolved [ 5 ]
          Resolution Fixed [ 1 ]
          Daniel made changes -
          Comment [ I also have the armv6 as a target architecture (iPhone 3G) and adding this plugin to the project gives me the following compilation error:

          21-Mar-2012 10:32:48 [exec] Ld build/Release-iphoneos/Eppy.app/Eppy normal armv6
          21-Mar-2012 10:32:48 [exec] (1 failure)
          21-Mar-2012 10:32:48 [exec] Undefined symbols for architecture armv6:
          21-Mar-2012 10:32:48 [exec] "_OBJC_CLASS_$_CDVLocalStorage", referenced from:
          21-Mar-2012 10:32:48 [exec] objc-class-ref in AppDelegate.o
          21-Mar-2012 10:32:48 [exec] ld: symbol(s) not found for architecture armv6
          21-Mar-2012 10:32:48 [exec] collect2: ld returned 1 exit status

          Would it be an idea to only link to this header file if iOS >= 5.1? In that case I would expect the app to compile fine for older devices. (Since there will never be an iOS 5.1+ for armv6/iPhone 3G)

          ]
          Shazron Abdullah made changes -
          Resolution Fixed [ 1 ]
          Status Resolved [ 5 ] Reopened [ 4 ]
          Shazron Abdullah made changes -
          Attachment CDVLocalStoragePlugin.zip [ 12519562 ]
          Shazron Abdullah made changes -
          Attachment CDVLocalStoragePlugin.zip [ 12519129 ]
          Shazron Abdullah made changes -
          Attachment CDVLocalStoragePlugin.zip [ 12519610 ]
          Shazron Abdullah made changes -
          Attachment CDVLocalStoragePlugin.zip [ 12519562 ]
          Shazron Abdullah made changes -
          Attachment CDVLocalStoragePlugin.zip [ 12519698 ]
          Shazron Abdullah made changes -
          Attachment CDVLocalStoragePlugin.zip [ 12519610 ]
          Shazron Abdullah made changes -
          Status Reopened [ 4 ] Resolved [ 5 ]
          Resolution Fixed [ 1 ]
          Shazron Abdullah made changes -
          Attachment README.txt [ 12519748 ]
          Shazron Abdullah made changes -
          Attachment CDVLocalStoragePlugin.zip [ 12519749 ]
          Shazron Abdullah made changes -
          Attachment CDVLocalStoragePlugin.zip [ 12519698 ]
          Shazron Abdullah made changes -
          Attachment CDVLocalStorageDiagnostics.zip [ 12523416 ]
          Roy Yang made changes -
          Comment [ Ah I see what the issue is. I looked at the console in xCode organizer. It appears that the application gets a new ID or there is an inconsistency in the ID and I'm getting deny file-write-create /private/var/mobile/Applications/F2BE3CCA-AB36-4498-A7B0-81CB6D643512. On subsequent closing down and reopening of the app, I no longer see that message:

          Apr 24 16:50:45 unknown GreenSolutions[1451] <Warning>: ===Start CDVLocalStorageDiagnostics==========
          Apr 24 16:50:45 unknown GreenSolutions[1451] <Warning>: iOS version: 5.1
          Apr 24 16:50:45 unknown GreenSolutions[1451] <Warning>: =============================================
          Apr 24 16:50:45 unknown GreenSolutions[1451] <Warning>: Printing list of backup info.
          Apr 24 16:50:45 unknown GreenSolutions[1451] <Warning>: --------------------------------------
          Apr 24 16:50:45 unknown GreenSolutions[1451] <Warning>: Label: localStorage database
          Apr 24 16:50:45 unknown GreenSolutions[1451] <Warning>: shouldBackup: YES shouldRestore: NO
          Apr 24 16:50:45 unknown GreenSolutions[1451] <Warning>: Original: /var/mobile/Applications/15D854F8-CAD6-4E91-8665-349609846668/Library/Caches/file__0.localstorage Exists?: YES
          Apr 24 16:50:45 unknown GreenSolutions[1451] <Warning>: Backup: /var/mobile/Applications/15D854F8-CAD6-4E91-8665-349609846668/Documents/Backups/localstorage.appdata.db Exists?: YES
          Apr 24 16:50:45 unknown GreenSolutions[1451] <Warning>: --------------------------------------
          Apr 24 16:50:45 unknown GreenSolutions[1451] <Warning>: Label: websql main database
          Apr 24 16:50:45 unknown GreenSolutions[1451] <Warning>: shouldBackup: NO shouldRestore: NO
          Apr 24 16:50:45 unknown GreenSolutions[1451] <Warning>: Original: /var/mobile/Applications/15D854F8-CAD6-4E91-8665-349609846668/Library/Caches/Databases.db Exists?: NO
          Apr 24 16:50:45 unknown GreenSolutions[1451] <Warning>: Backup: /var/mobile/Applications/15D854F8-CAD6-4E91-8665-349609846668/Documents/Backups/websqlmain.appdata.db Exists?: NO
          Apr 24 16:50:45 unknown GreenSolutions[1451] <Warning>: --------------------------------------
          Apr 24 16:50:45 unknown GreenSolutions[1451] <Warning>: Label: websql databases
          Apr 24 16:50:45 unknown GreenSolutions[1451] <Warning>: shouldBackup: NO shouldRestore: NO
          Apr 24 16:50:45 unknown GreenSolutions[1451] <Warning>: Original: /var/mobile/Applications/15D854F8-CAD6-4E91-8665-349609846668/Library/Caches/file__0 Exists?: NO
          Apr 24 16:50:45 unknown GreenSolutions[1451] <Warning>: Backup: /var/mobile/Applications/15D854F8-CAD6-4E91-8665-349609846668/Documents/Backups/websqldbs.appdata.db Exists?: NO
          Apr 24 16:50:45 unknown GreenSolutions[1451] <Warning>: =============================================
          Apr 24 16:50:45 unknown GreenSolutions[1451] <Warning>: Printing folder locations, check for existence.
          Apr 24 16:50:45 unknown GreenSolutions[1451] <Warning>: Path /var/mobile/Applications/15D854F8-CAD6-4E91-8665-349609846668/Library/Caches exists?: YES
          Apr 24 16:50:45 unknown GreenSolutions[1451] <Warning>: Path /var/mobile/Applications/15D854F8-CAD6-4E91-8665-349609846668/Library/WebKit exists?: NO
          Apr 24 16:50:45 unknown GreenSolutions[1451] <Warning>: =============================================
          Apr 24 16:50:45 unknown GreenSolutions[1451] <Warning>: Checking plist /var/mobile/Applications/15D854F8-CAD6-4E91-8665-349609846668/Library/Preferences/com.fsgi.GreenSolutions.plist for WebKit keys.
          Apr 24 16:50:45 unknown GreenSolutions[1451] <Warning>: Key: WebKitLocalStorageDatabasePathPreferenceKey Value: /var/mobile/Applications/15D854F8-CAD6-4E91-8665-349609846668/Library/Caches
          Apr 24 16:50:45 unknown GreenSolutions[1451] <Warning>: Key: WebDatabaseDirectory Value: /var/mobile/Applications/15D854F8-CAD6-4E91-8665-349609846668/Library/Caches
          Apr 24 16:50:45 unknown GreenSolutions[1451] <Warning>: ===End CDVLocalStorageDiagnostics============
          >
          Apr 24 16:50:47 unknown sandboxd[1452] <Notice>: GreenSolutions(1451) deny file-write-create /private/var/mobile/Applications/F2BE3CCA-AB36-4498-A7B0-81CB6D643512
          ]

            People

            • Assignee:
              Shazron Abdullah
              Reporter:
              Amirudin Bin Mohamed Ghani
            • Votes:
              11 Vote for this issue
              Watchers:
              14 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved:

                Development