2012-12-01 14 views
5

Web OS'de, WebGL'deki bazı siteler için kullanılacak Web OS tarayıcısı için bir uygulama yazıyorum. Her şey hazır, uygulama normal HTML sitelerini doğru görüntüler, ancak WebGL çalışmıyor. Uygulamamda WebGL'yi nasıl etkinleştirebilirim? sonraki sürümleri bu kaldırırsanız iptal olmaz kodu sağlamak için ben respondsToSelector: ile korudular Bu örnekteWebKit'teki Mac OS uygulamasında WebGL'yi etkinleştirin

WebPreferences *p = [webView preferences]; 
if ([p respondsToSelector:@selector(setWebGLEnabled:)]) { 
    [p setWebGLEnabled:YES]; 
} 

: Bir WebView'ı sahip olduktan

cevap

6

WebGL etkinleştirebilirsiniz bir belgesiz yöntem yoktur belirli bir seçenek.

Apple'ın Mac App Store'una gönderilirse, belgesiz arayüzleri kullanarak kod içeren bir uygulamanın reddedilebileceğini anladığımı unutmayın.


Diğer bir seçenek resmen WebGL (Safari'de gösterildiği gibi Apple'ın WebKit yalnızca bir geliştirici seçeneği olarak sahip olduğu, muhtemelen deneysel olması amaçlanmıştır) destekleyen farklı gömülü oluşturucunun kullanmaktır. Hem Firefox hem de Chrome WebGL'yi desteklediğinden, Gecko ve Chromium Embedded Framework'a bakın. (Not: Gömülü Gecko'nun WebGL'yi destekleyip desteklemediğini doğrulayamadım.)

+0

Çalışıyor! Teşekkürler Kevin :) Ve Mac App Store sunumu ile bazı sorunlar yaratabilirsiniz belgelenmemiş bir yöntem olduğunu fark etmek için iki kez teşekkürler. En iyi. – Beny

+0

WebGL'yi hızlı bir görünüm uzantısı içinde etkinleştirmek için bunu kullanmanın bir yolu var mı? 'GeneratePreviewForURL' işlevinin özellikle içinde? http://stackoverflow.com/q/18443710/148668 –

2

Mavericks'de bu doğru koddur.

WebPreferences *preferences = [_webview preferences]; 
if([preferences respondsToSelector:@selector(setWebGLEnabled:)]){ 
    [preferences performSelector:@selector(setWebGLEnabled:) withObject:[NSNumber numberWithBool:YES]]; 
} 

aksi takdirde bir derleme hatası alırsınız performSelector araman gerekiyor.

0

Belgesiz bir yöntem kullanmadan bunun nasıl yapılacağını anladım. Uygulamanız için WebKitWebGLEnabled kullanıcı tercihini @YES olarak ayarlamanız gerekiyor. Uygulamanın ilk kez çalıştırılmasını sağlamak için, WebView başlatılmadan önce, erken ayarlanması gerekir. Benim durumumda, WebView örneği ana nib dosyasından yüklenir, bu yüzden çok erken. Ben Supporting Files/main.m bu kodu eklendi:

[[NSUserDefaults standardUserDefaults] setObject:@YES 
             forKey:@"WebKitWebGLEnabled"]; 

hiçbir belgesiz yöntem, bu kod app store kurallar dahilinde olduğunu varsayalım denir, ama benim uygulaması henüz incelenmedi beri, unutmayın!