2012-04-17 65 views
1

科爾多瓦:1.6.0的iOS handleOpenURL與PhoneGap的1.6.0

的iOS:5.1

的XCode:4.3.1

我試圖進軍handleOpenURL中的PhoneGap 1.6.0與一個非常基本的示例程序。我想在每次發出http/https請求時分析一個url。我現在所做的只是添加日誌消息來查看網址的主機。

- (BOOL) application:(UIApplication*)application handleOpenURL: 
(NSURL*)url 
{ 
    NSLog(@"Hi"); 
    NSLog(@"Host: %@", [url host]); 

    if (!url) { 
     return NO; 
    } 

    ... 
} 

但是,日誌消息從不向控制檯寫入任何內容。

我也注意到了評論:

// only valid if Example-Info.plist specifies a protocol to handle 

也許我的例子中,Info.plist文件是錯誤的?我已經添加了CFBundleURLTypes,假設這是「指定要處理的協議」的含義。我需要在別處添加其他東西嗎?以下是我的Example-Info.plist文件的示例部分。模擬器可能無法識別我的.plist修改嗎?

... 
<key>CFBundleURLTypes</key> 
<array> 
    <dict> 
     <key>CFBundleURLSchemes</key> 
      <array> 
       <string>http</string> 
       <string>https</string> 
      </array> 
    </dict> 
</array> 

我也暗示,因爲handleOpenURL已被棄用。

- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication (NSString *)sourceApplication annotation:(id)annotation 
{ 
    NSLog(@"Hi"); 
    ... 
} 

因爲我在我的應用程序中打開URL,所以都沒有被調用。我已經嘗試了所有堆棧溢出解決方案,沒有這樣的運氣。如果有任何幫助,我使用jQuery mobile 1.1.0進行頁面轉換。

回答

1

這不是這些方法的目的。他們將處理用於開放您的應用程序的URL,而不是您在UIWebView中打開的任何URL。

你應該看的委託方法UIWebView

具體

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

+0

這當然沒有幫助,感謝@koregan。主要問題在於自Cordova 1.5.0以來,它們改變了我們應該重寫這些方法的地方。 爲了將來的參考,從Cordova 1.6.0開始......你應該修改** MainViewController.m **中的方法而不是** AppDelegate.m ** – user1236971 2012-04-17 15:25:58

相關問題