PhoneGap / iOS - Как заставить Childbrowser игнорировать ссылки на Appstore? - PullRequest
0 голосов
/ 01 ноября 2011

У меня есть приложение в процессе обновления до iOS5 SDK и Phonegap 1.0.0

Плагин Childbrowser работает правильно, но при нажатии на ссылку на магазин приложений iTunes - ссылка открывается в окне Childbrowser.

Я бы предпочел, чтобы он открывался в Appstore напрямую, что происходит, если я не использую плагин ChildBrowser.

Это ссылка на appstore (указывает на страницу отправки отзыва в appstore)

http://itunes.apple.com/WebObjects/MZStore.woa/wa/viewContentsUserReviews?id=386470812&pageNumber=0&sortOrdering=1&type=Purple+Software&mt=8

и вот как изменяется AppDelegate

AppDelegate.m, прокрутите путь вниз и замените следующее:

- (BOOL)webView:(UIWebView *)theWebView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType
{
return [ super webView:theWebView shouldStartLoadWithRequest:request navigationType:navigationType ];
}

с этим:

- (BOOL)webView:(UIWebView *)theWebView shouldStartLoadWithRequest:
(NSURLRequest *)request navigationType:
(UIWebViewNavigationType)navigationType
{
NSURL *url = [request URL];
if ([[url scheme] isEqualToString:@"gap"] || [url isFileURL]) {
return [ super webView:theWebView shouldStartLoadWithRequest:request
navigationType:navigationType ];
}
else {
ChildBrowserViewController* childBrowser =
[ [ ChildBrowserViewController alloc ] initWithScale:FALSE ];
[super.viewController presentModalViewController:childBrowser
animated:YES ];
[childBrowser loadURL:[url description]];
[childBrowser release];
return NO;
}
}

Я использовал метод, описанный в этом посте блога, чтобы запустить и запустить Childbrowser http://iphonedevlog.wordpress.com/2011/09/24/installing-childbrowser-into-xcode-4-with-phonegap-1-0-mac-os-x-snow-leopard/

Есть мысли о том, как изменить это, чтобы произвести желаемое действие?

Большое спасибо ..

1 Ответ

2 голосов
/ 04 ноября 2011

Вы должны проверить, содержит ли ваш URL-адрес http://itunes.apple.com/ в качестве подстроки, используя метод rangeOfString: и атрибут location.
Пожалуйста, подтвердите ваш javascript под названием URL, например,

window.location="http://itunes.apple.com/us/app/code-check-basic-free-medical/id386470812?mt=8";
можно использовать любой метод jquery.
Пожалуйста, замените метод shouldStartLoadWithRequest: следующим фрагментом.
/**
 * Start Loading Request
 * This is where most of the magic happens... We take the request(s) and process the response.
 * From here we can re direct links and other protocalls to different internal methods.
 */
- (BOOL)webView:(UIWebView *)theWebView shouldStartLoadWithRequest:
(NSURLRequest *)request navigationType:
(UIWebViewNavigationType)navigationType
{
  NSURL *url = [request URL];
  if ([[url scheme] isEqualToString:@"gap"] || [url isFileURL]) {
    return [ super webView:theWebView shouldStartLoadWithRequest:request
            navigationType:navigationType ];
  }
  else {
    //here we will check whether urlString has http://itunes.apple.com/ as substring or not
    NSString* urlString=[url absoluteString];
    if ([urlString rangeOfString:@"http://itunes.apple.com/"].location == NSNotFound){
      ChildBrowserViewController* childBrowser = [ [ ChildBrowserViewController alloc ] initWithScale:FALSE ];
      childBrowser.modalPresentationStyle = UIModalPresentationFormSheet;
      childBrowser.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;   
      [super.viewController presentModalViewController:childBrowser animated:YES ];   
      [childBrowser loadURL:urlString];
      [childBrowser release];
      return NO;      
    }
    else 
      return YES;      
  }
}

спасибо,
Mayur

...