2013-03-09 6 views
1

Je suis nouveau sur le développement de l'iPhone et j'essaie de charger un objet HTML dans un UIWebView.Comment charger un objet HTML dans UIWebView?

Le problème est que lorsque je transforme les données HTML en une chaîne, l'application se bloque et dit EXC_BAD_ACCESS. L'objet est une vidéo de Brightcove et j'ai copié le code d'intégration directement à partir du site web de brightcove, donc je ne comprends pas pourquoi ça ne marche pas. Toute aide est grandement appréciée.

code:

NSString *brightstring = [NSString stringWithFormat:@"<html><body><object id=flashObj width=540 height=400 classid=clsid:D27CDB6E-AE6D-11cf-96B8-444553540000 codebase=http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,47,0><param name=movie value=http://c.brightcove.com/services/viewer/federated_f9?isVid=1 /><param name=bgcolor value=#FFFFFF /><param name=flashVars value=videoId=%@&playerID=659636031001&playerKey=AQ~~,AAAAC59qSJk~,vyxcsD3OtBM6WfpHEsDft5laXH9ASJhF&domain=embed&dynamicStreaming=true /><param name=base value=http://admin.brightcove.com /><param name=seamlesstabbing value=false /><param name=allowFullScreen value=true /><param name=swLiveConnect value=true /><param name=allowScriptAccess value=always /><embed src=http://c.brightcove.com/services/viewer/federated_f9?isVid=1 bgcolor=#FFFFFF flashVars=videoId=%@&playerID=659636031001&playerKey=AQ~~,AAAAC59qSJk~,vyxcsD3OtBM6WfpHEsDft5laXH9ASJhF&domain=embed&dynamicStreaming=true base=http://admin.brightcove.com name=flashObj width=540 height=400 seamlesstabbing=false type=application/x-shockwave-flash allowFullScreen=true swLiveConnect=true allowScriptAccess=always pluginspage=http://www.macromedia.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash></embed></object></body></html>", clipid]; //<--Crashes Here 

NSString* html = [NSString stringWithFormat:brightstring, 540, 400]; 

[videoScreen loadHTMLString:html baseURL:nil]; 

Répondre

0

Il est assez simple:

NSString *brightstring = [NSString stringWithFormat:@"...videoId=%@&...videoId=%@&...", clipid]; //<--Crashes Here 

Vous avez %@ deux fois dans votre chaîne de format, mais vous passez dans un seul argument.

Je vous recommande de charger le code HTML à partir d'un fichier et en utilisant -stringByReplacingOccurrencesOfString:withString: pour remplir l'ID vidéo (en utilisant un espace réservé comme ${VIDEO_ID}).

+0

Merci de votre réponse. Je viens d'ajouter le deuxième argument à la fin de mon brightstring et maintenant il ne plante pas, mais il ne charge pas non plus. Des pensées? –

0

On dirait que la vidéo est une vidéo flash, et à ma connaissance (et je peux me tromper), mais iOS ne supporte pas le flash. Essayez d'utiliser un autre format comme mp4, mpv, 3gp, etc. À des fins de test, j'hébergerais d'abord le fichier .html (si vous avez une société d'hébergement, ou l'exécuter localement en utilisant apache), puis y accéder depuis le navigateur Web de votre téléphone . Si ça ne marche pas, alors ça ne marchera pas non plus.

+0

Je pense que vous avez peut-être raison. Je viens de charger la page principale de Brightcove au lieu de simplement l'objet du lecteur vidéo. la page Web s'est bien chargée et a affiché l'objet du lecteur vidéo. Cependant, quand je clique sur la vidéo, elle ne joue pas dans le webview mais joue plutôt dans le lecteur vidéo ios qui, je crois, joue mp4. –

Questions connexes