2011-10-28 1 views
2

Dans votre navigateur de bureau standard comme Safari ou Chrome, lorsque vous accédez à un site tel que maps.google.com et cliquez sur le bouton "Ma position", un message vous demande si vous souhaitez autoriser le site Web à utiliser votre position de triangulation GPS/wifi.Boîte de dialogue d'autorisation d'affichage Cocoa WebView pour js navigator.geolocation.getCurrentLocation()

Ma question est, comment pouvez-vous détecter un tel événement et montrer une boîte de dialogue à un utilisateur lors de l'utilisation d'un objet WebView Cocoa (bureau) standard? J'ai essayé d'implémenter toutes les différentes méthodes de délégué et aucun d'entre eux ne semble attraper cet événement javascript.

navigator.geolocation.getCurrentPosition(function(position) { 
    do_something(position.coords.latitude, position.coords.longitude); 
}); 

Il échoue juste silencieusement. Comment puis-je demander à l'utilisateur l'autorisation de partage de position?

+2

Avez-vous vu [cette question sur Stack Overflow] [1]? On dirait que ça pourrait être une solution. [1]: http://stackoverflow.com/questions/5505617/how-can-i-set-my-latitude-and-longitude-for-debugging-the-geolocation-api-with- g –

+0

Je marque votre réponse correctement, mais c'est le commentaire qui m'a conduit sur le bon chemin. J'ai encore beaucoup de questions, mais au moins maintenant je peux intercepter la requête js de géolocalisation et faire quelque chose à ce sujet dans Obj-C. – Andrew

+0

J'ai essayé d'ajouter mon commentaire en tant que nouvelle réponse, mais StackOverflow l'a automatiquement converti en commentaire. Quoi qu'il en soit, merci! Heureux d'avoir pu aider. –

Répondre

0

à creuser dans certains private headers j'ai trouvé cette méthode:

  • (BOOL) webView: (WebView *) cadre de l'expéditeur: (Webframe *) Cadre requestGeolocationPermission: (WebGeolocation *) Géolocalisation securityOrigin: (WebSecurityOrigin *) origine;

Avez-vous essayé de voir si elle s'appelle? Cependant, vous n'aurez probablement pas dépassé l'App Store, puisqu'il s'agit d'un appel API privé.

+0

Cela doit effacer un avis App Store, donc pas de méthodes privées. – Andrew

+0

juste testé: il ne s'appelle pas; au moins pas à partir du WebUIDelegate. Peut-être que l'on doit s'inscrire comme WebUIPrivateDelegate ... – auco

Questions connexes