1

由于 iOS 6 在获取用户位置时使用 GeoLocation/WatchPosition 存在错误,因此我在 xcode 中实现 locationManager 并获取坐标。

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

编辑:

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

编辑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>
4

1 回答 1

1

有一种简单的方法可以解决您的问题。您可以使用 WebViewJavascriptBridge 将 Objective C 的方法“填充”到 webview,因此您的 html 页面可以通过 window.xxx 访问该方法来调用在 Objective C 中实现的方法。

请看一下https://github.com/marcuswestin/WebViewJavascriptBridge

于 2015-02-06T08:49:52.150 回答