如何在本地HTML文件中使用locationManager中的coords?

时间:2013-02-06 13:28:37

标签: html xcode cllocationmanager

由于iOS 6有一个GeoLocation / WatchPosition的错误来获取用户位置,我在xcode中实现了locationManager并获取了坐标。

但是,我想在本地HTML(webView)文件中使用这些coords。 是否可以使用,发送或调用locationManager中的coords到HTML / JavaScript文件?

编辑:

我想到了一个可能的解决方案...... cookies ...可以这样做,因为我无法在下面的代码中获得输出:

编辑2: 是的它可以...我调整下面的代码,它的工作原理。重要的是Cookie域和路径选项,因此webView(HTML)可以获取cookie。

但如果有人知道更好的解决方案,请告诉我,我想学习!

- (void)applicationdidBecomeActive {     
    [[NSHTTPCookieStorage sharedHTTPCookieStorage] setCookieAcceptPolicy:NSHTTPCookieAcceptPolicyAlways]; 
} 

- (void)locationManager:(CLLocationManager *)manager
didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation
{

    ...      

    NSLog(@"%@", DevicePosition);
    NSDictionary *newCookieDict = [NSMutableDictionary
                                   dictionaryWithObjectsAndKeys:
                                   @".^filecookies^", NSHTTPCookieDomain,
                                   @"DevicePos", NSHTTPCookieName,
                                   @"/", NSHTTPCookiePath,
                                   DevicePosition, NSHTTPCookieValue,
                                   //@"2012-01-01 12:00:00 -0100", NSHTTPCookieExpires,
                                   nil];
    //create a new cookie
    NSHTTPCookie *cookie = [NSHTTPCookie
                            cookieWithProperties:newCookieDict];
    //add the new cookie
    [[NSHTTPCookieStorage sharedHTTPCookieStorage] setCookie:cookie];

    // dev cookie controle
    NSHTTPCookieStorage *cookieJar = [NSHTTPCookieStorage sharedHTTPCookieStorage];
    for (cookie in [cookieJar cookies]) {
        NSLog(@"%@", cookie);
}

HTML文件:

<script type="text/javascript">   
    function getCookie(name)    {        
        var re = new RegExp(name + "=([^;]+)");        
        var value = re.exec(document.cookie);        
        return (value != null) ? unescape(value[1]) : null;   
        } 
</script>

1 个答案:

答案 0 :(得分:1)

有一种简单的方法来解决您的问题。 您可以使用WebViewJavascriptBridge来填充&#39;一个Objective C的webview方法,所以你的html页面可以通过window.xxx访问该方法来调用Objective C中实现的方法。

请查看https://github.com/marcuswestin/WebViewJavascriptBridge