Приложение не работает должным образом при установке с файлом IPA - PullRequest
0 голосов
/ 16 января 2012

Я играю видео YouTube на iPad через webView, используя этот код.

NSString *htmlString = [NSString stringWithFormat:@"<html>\
                        <body>\
                          <div id=\"player\"> </div>\
                          <script>\
                            var tag = document.createElement('script');\
                            tag.src = \"http://www.youtube.com/player_api\";\
                            var firstScriptTag = document.getElementsByTagName('script')[0];\
                            firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);\
                            var done = false;\
                            var player;\
                            function onYouTubePlayerAPIReady() {\
                               player = new YT.Player('player', {\
                               height: '%i',\
                               width: '%i',\
                               videoId: '%@',\
                               events: {\
                                'onReady': onPlayerReady,\
                                'onStateChange': onPlayerStateChange\
                                }\
                              });\
                            }\
                            function onPlayerReady(evt) {\
                                evt.target.playVideo();\
                            }\
                            function onPlayerStateChange(evt) {\
                                if(evt.data==0)\
                                {\
                                      window.location=\"http:\\end\";\
                                 }\
                             }\
                             function resizePlayer(width,height)\
                             {\
                                   player.setSize(width, height);\
                             }\
                           </script>\
                        </body>\
                     </html>",
                        height,width, videoID];

Проблема в том, что когда я устанавливаю свое приложение через xCode, оно работает нормально, но когда я использую ipa-файл, это не так.

Ответы [ 2 ]

1 голос
/ 16 января 2012

Проблема, с которой вы столкнулись, может зависеть от конкретного устройства и версий iOS (в реализациях UIWebView есть небольшие различия), больше, чем от использования файла ipa.

Таким образом, вы можете попытаться воспроизвести среду, в которой UIWebView не может правильно интерпретировать ваш HTML-фрагмент. Кроме того, не забудьте определить webView:didFailLoadWithError: и взглянуть на способ перехвата ошибок JavaScript внутри UIWebViews и отображения их на консоли.

Надеюсь, это поможет.

0 голосов
/ 17 января 2012

Я нашел, что вызвало мою проблему.

Чтобы мое приложение могло поймать момент, когда видео подходит к концу, я написал код Javascript, чтобы перенаправить страницу на другой URL.Затем я реализовал метод из WebViewProtocol - (BOOL) webView: (UIWebView *) shouldStartLoadWithREquest: (NSURLRequest *) navigationType: (UIWebViewNavigationType) navigationType.Основная идея заключалась в том, чтобы закрыть представление, когда оно пытается перейти по какой-то специальной ссылке, но я допустил одну ошибку, которая по неизвестной причине не возникла при запуске моего приложения из XCode.

Код с ошибкой:

-(BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request     navigationType:(UIWebViewNavigationType)navigationType
{
     NSString *url = [[request URL] absoluteString];
if ([url isEqualToString:@"http://youtube.com/end"])
{
    [self onCloseVideo];
    [self unsubscribe];
    return = NO;
} 
//here on else I had to return YES but I didn't
}

Код без ошибки:

-(BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request     navigationType:(UIWebViewNavigationType)navigationType
{
     NSString *url = [[request URL] absoluteString];
     BOOL shouldStartRequest = YES;
if ([url isEqualToString:@"http://youtube.com/end"])
{
    [self onCloseVideo];
    shouldStartRequest = NO;
}               

return shouldStartRequest;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...