1

phonegap 2.3をインストールし、作成したマップリンクを開こうとしました。これは、更新までは完全に正常に機能していました。

ここにあるものに合うようにURLスキームを微調整しました。また、通常のURLをフィードしようとしましたが、何をしても、ブラウザウィンドウであるか、ブラウザウィンドウであるかにかかわらず、アプリの外部にリンクをロードできないようです。ネイティブマップアプリ。

コード:

openDeviceMapsApplication: function(address, lat, lon) {
    var query = '?';

    address = address + ", Australia";
    address = encodeURI(address);

    if (address[0] !== '.') {
        query += 'q=' + address + '&';
    } else {
        query += 'q=' + lat + ',' + lon + '&';
    }

    query += 'z=15';


    var url = 'http://maps.google.com/maps';
    var osVersion = "not detected";

    console.log("detect");

    if(/OS [2-4](_\d)(_\d)? like Mac OS X/i.test(navigator.userAgent)) { //is it ios 2-4?
        url = 'http://maps.google.com/maps'; osVersion = "ios 2-4";
        console.log("ios2-4");
    } else if(/CPU like Mac OS X/i.test(navigator.userAgent)) { // ios 1?!?!
        url = 'http://maps.google.com/maps'; osVersion = "ios 1";
        console.log("ios4");
    } else if(/OS [5](_\d)(_\d)? like Mac OS X/i.test(navigator.userAgent)) { //ios 5?
        url = 'http://maps.google.com/maps'; osVersion = "ios 5";
                        console.log("ios5");
    } else{//ios 6 or greater
        url = 'http://maps.apple.com/'; osVersion = "ios 6 or greater";
                        console.log("ios6");
    }

    url += query;
    console.log(url);
    window.location.href = url;
    return;

},

誰かが回避策を持っていますか?

PS、OS検出は機能し、醜いです..しかしそれは機能します:)

4

1 に答える 1

2

さて、多くの検索と誤ったリードの後で、このバージョンのCordova/PhonegapではURLの処理が異なることがわかりました。

だから私はデリゲートを見つけました:---このデリゲートメソッドを編集するのはCordovaプロジェクトの一部としてCDVViewController.mにあります

 - (BOOL)webView:(UIWebView*)theWebView shouldStartLoadWithRequest:(NSURLRequest*)request
 navigationType:(UIWebViewNavigationType)navigationType

そして、if-caseを追加しました。チェックは基本的に「はURL(httpsまたはhttp)であり、(maps.google.com/mapsまたはmaps.apple.com-それぞれiOS 5および6の場合)のURLです。

if (([[url scheme] isEqualToString:@"http"] || [[url scheme] isEqualToString:@"https"] || [[url scheme] isEqualToString:@"itms-apps"]) &&
             (([url.path rangeOfString:@"maps.google.com/maps"].location == NSNotFound) || ([url.path rangeOfString:@"maps.apple.com"].location == NSNotFound))) {
        [[UIApplication sharedApplication] openURL:url];
        return NO;
    }

これにより、マップの問題が修正されました。これで解決されない他のURLベースのアプリケーション参照が存在する可能性があります。

于 2013-01-13T23:47:43.583 に答える