1

iOS 6 にはユーザーの位置を取得するための GeoLocation/WatchPosition のバグがあるため、locationManager を xcode で実装して座標を取得しています。

しかし、これらの座標をローカルの HTML (webView) ファイルで使用したいと考えています。locationManager から HTML / JavaScript ファイルへの座標を使用、送信、または呼び出すことは可能ですか?

編集:

私は可能な解決策について考えました...クッキー...以下のコードで出力を取得できないため、それを行うことができます:

EDIT 2:はい、できます...以下のコードを調整すると動作します。webView (HTML) が Cookie を取得できるように、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 に答える