Comment activer le stockage local dans mon application WebKit?
J'ai une Cocoa/Objective-C application qui intègre un WebKit WebView. J'ai besoin de tourner sur le support de base de données et le stockage local. Je sais que cela peut être fait--je avoir de travail dans Safari, mais je ne peux pas trouver un exemple de comment configurer cela dans ma propre application.
J'ai trouvé c' (sans réponse) DONC, la question qui fournit un exemple, mais, comme l'original de l'affiche mentionne, ne fonctionne pas. Et en fait, les méthodes qu'il utilise (setDatabasesEnabled, setLocalStorageEnabled) ne sont pas définies dans mon WebKit.cadre (Xcode 3.2.5), même si elles semblent exister que si je définis moi-même.
Quelqu'un peut-il donner un exemple de comment activer le local de stockage de base de données pour un basé sur WebKit application Cocoa? Merci beaucoup, si si!
Mise à jour: j'ai quelque chose qui marche...j'ai été confondu par les "bases de données" et de "stockage local", qui sont apparemment des choses tout à fait différentes. Voici le code qui fonctionne:
WebPreferences* prefs = [webView preferences];
[prefs _setLocalStorageDatabasePath:@"~/Library/Application Support/MyApp"];
[prefs setLocalStorageEnabled:YES];
De sorte que les œuvres, mais il exige de la méthode privée _setLocalStorageDatabasePath, ce qui signifie pas de l'App Store pour moi. Donc, mon modifiée questions est maintenant: est-il un moyen de faire ce travail sans à l'aide d'une méthode privée? J'ai trouvé le WebDatabaseDirectory préférence clé dans cette réponsequi contrôle où bases de données aller. Mais je ne pouvais pas trouver une clé correspondant local de stockage de n'importe où dans les sources. Ou est-il un moyen pour moi de force local de stockage à utiliser la base de données, et donc la WebDatabaseDirectory clé? Des idées?
source d'informationauteur starkos
Vous devez vous connecter pour publier un commentaire.
J'ai soumis une application à l'aide de ce code pour le Mac App Store, Apple et approuvé:
Objective-C
Swift 3
Qu'elles continuent à approuver le fait que, je ne sais pas, mais ils ont permis à ma demande de 2011-01-29. Mise à jour: Ils ont également approuvé une version mise à jour de la même application, donc il a traversé deux fois.
Je vais prendre le Javascript pour Objective-C pont de l'approche et de tout stocker dans la base de données. Ensemble localStorage pour de faux, puis de construire un objet JS et une instance nommée "localStorage", avec les mêmes méthodes. Mon javascript devs ne savent pas la différence, et j'ai déjà eu à faire la même chose avec de l'Air (en gros). Il y a un autre moyen de quitter le localStorage intact, même si il ne fait pas les stocker dans une persistance de la db. Les éléments peuvent être réitéré par le biais de javascript et manipulées à partir de là, mais je pense qu'il serait mieux de remplacer simplement l'objet de mes propres.
Après beaucoup de douleur et de frustration que j'ai trouvé un moyen pour permettre aux locaux de stockage et ont persister à travers l'application s'exécute correctement. Cette solution est spécifiquement pour OS x, mais il peut être applicable pour iOS.
Télécharger et ajouter ce fichier d'en-tête dans votre projet. Il n'est pas inclus dans le XCode Webkit distribution.
cliquez pour télécharger WebStorageManagerPrivate.h
Ajouter à cela, les lignes suivantes:
Ces vous permettent de récupérer l'emplacement du répertoire de la WebKit local de stockage de traqueur de base de données. Ceci est important car, en raison d'un bogue dans WebKit, si vous ne stockez pas vos LocalStorage WebView fichiers dans le même répertoire que le suivi de la base de données, ils sont supprimés à chaque fois que vous exécutez votre application. Je n'ai pas vu un chemin dans le WebStorageManager code pour modifier cet emplacement pour une application individuelle. C'est toujours la lecture à partir des préférences de l'utilisateur.
Inclure la WebStorageManagerPrivate.h dans votre appDelegate.
Vous devez télécharger et de les inclure dans votre projet à un autre en-tête non inclus dans XCode distribution. Enregistrer en tant que WebPreferencesPrivate.h
cliquez pour télécharger WebPreferencesPrivate.h
Inclure la WebPreferencesPrivate.h dans votre appDelegate.
Maintenant utiliser le code ci-dessous dans votre applicationDidFinishLaunching gestionnaire d'initialiser et activer le LocalStorage. Le code suppose que vous avez un IBOutlet nommé "webView" pour la WebView vous utilisez.
J'espère que cela aide d'autres ont lutté ou luttent encore avec ce problème, jusqu'à ce qu'il est fixé correctement dans WebKit.