2012-12-01 16 views
5

पर मैक ओएस एप्लिकेशन में वेबजीएल सक्षम करें मैं वेबजीएल पर कुछ साइट के लिए उपयोग करने के लिए वेबकिट पर मैक ओएस - ब्राउज़र के लिए एक एप्लीकेशन लिख रहा हूं। सब तैयार है, एप्लिकेशन सामान्य एचटीएमएल साइटों को सही ढंग से प्रदर्शित करता है, लेकिन वेबजीएल काम नहीं करता है। मेरे ऐप में वेबजीएल कैसे सक्षम कर सकता है?वेबकिट

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

इस उदाहरण मैं respondsToSelector: के साथ संरक्षित किया है कोड सुनिश्चित करने के लिए गर्भपात नहीं होगा अगर बाद के संस्करणों इस निकालें:

उत्तर

6

बार जब आप एक WebView है, वहाँ एक अप्रलेखित विधि जो WebGL सक्षम कर सकते हैं है विशिष्ट विकल्प

ध्यान दें कि मैं समझता हूं कि अगर एप्पल के मैक ऐप स्टोर में सबमिट किया गया है तो अनियंत्रित इंटरफेस का उपयोग कर कोड वाले एप्लिकेशन को खारिज कर दिया जा सकता है।


एक अन्य विकल्प के लिए एक अलग एम्बेडेड रेंडरर जो सरकारी तौर पर WebGL (जहां एप्पल के वेबकिट सफारी में प्रदर्शन के रूप में केवल एक डेवलपर विकल्प के रूप में है, शायद प्रयोगात्मक करने का इरादा) का समर्थन करता है का उपयोग करें। चूंकि फ़ायरफ़ॉक्स और क्रोम दोनों वेबजीएल का समर्थन करते हैं, तो Gecko और Chromium Embedded Framework पर एक नज़र डालें। (नोट: मैं यह पुष्टि करने में सक्षम नहीं हूं कि एम्बेडेड गेको वेबजीएल का समर्थन करता है या नहीं।)

+0

यह काम करता है! धन्यवाद केविन :) और यह नोटिस करने के लिए दो बार धन्यवाद कि यह एक अनियंत्रित विधि है जो मैक ऐप स्टोर सबमिशन के साथ कुछ समस्याएं पैदा कर सकती है। श्रेष्ठ। – Beny

+0

क्या त्वरित उपयोग एक्सटेंशन के भीतर WebGL को सक्षम करने के लिए इसका उपयोग करने का कोई तरीका है? विशेष रूप से 'GeneratePreviewForURL' फ़ंक्शन के अंदर? http://stackoverflow.com/q/18443710/148668 –

2

मैवरिक्स में, यह सही कोड है।

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

आपको प्रदर्शन चयनकर्ता को कॉल करने की आवश्यकता है अन्यथा आपको संकलन त्रुटि मिल जाएगी।

0

मुझे पता चला कि अनियंत्रित विधि का उपयोग किये बिना इसे कैसे किया जाए। आपको अपने ऐप के लिए उपयोगकर्ता वरीयता WebKitWebGLEnabled@YES पर सेट करने की आवश्यकता है। एप चलाने के लिए पहली बार सेटिंग लागू करने के लिए, WebView प्रारंभ होने से पहले इसे जल्दी सेट करने की आवश्यकता है। मेरे मामले में, WebView उदाहरण मुख्य निब फ़ाइल से लोड किया गया है, इसलिए यह वास्तव में बहुत जल्दी है। मैं Supporting Files/main.m लिए इस कोड को कहा:

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

कृपया ध्यान दें, क्योंकि कोई गैर-दस्तावेजी विधि कहा जाता है, मुझे लगता है इस कोड app की दुकान दिशानिर्देशों के अनुरूप है, लेकिन मेरे एप्लिकेशन समीक्षा अभी तक नहीं गया है!

संबंधित मुद्दे