2012-11-07 25 views
11

मुझे मौत के लिए आग लगने से पहले, मुझे पता है कि यह वर्तमान में ऑडियो फाइल को डाउनलोड करने के अपने उपयोगकर्ताओं को डरावनी लागत पर ऐप्पल की चिंता के कारण काम नहीं करता है (वेब ​​को अपंग करने की कोशिश कर रहे उनके साथ कुछ भी नहीं करना ऐप्स के रूप में उन्हें उनके 30% नहीं मिलता है)।मोबाइल सफारी पर ऑटोप्ले ऑडियो

हालांकि, मेरा सवाल है: क्या किसी को अभी तक एक चालाक कामकाज मिला है? मैं सिर्फ एक गेम के लॉन्च पर एक स्टार्ट अप ध्वनि खेलना चाहता हूं और वर्तमान में ऑडियो को चलाने से पहले उपयोगकर्ता को कहीं भी क्लिक करने की प्रतीक्षा करनी है। आप में से एक चालाक chaps अब यह काम कर लिया होगा?

+1

मैं कुछ हफ्ते पहले ऐसा कुछ करने की सोच रहा था और मेरी खोज निष्फल थी ... – boz

+0

मैंने इस समस्या को मौत के लिए गुमराह किया है और कुछ भी उपयोगी नहीं मिला है। कृपया Stackoverflow, आप मेरी एकमात्र आशा है ... –

+0

मुझे 'ऑडियोकॉन्टेक्स्ट' का उपयोग करके फ़ायरफ़ॉक्स और क्रोम के लिए एक कामकाज मिला, लेकिन मैंने सफारी पर कोशिश नहीं की (कृपया पुष्टि करें कि क्या आपके पास सफारी मोबाइल है या नहीं)। इसी तरह के प्रश्न पर मेरा उत्तर देखें https://stackoverflow.com/a/46485784/2342518 [आइए आशा करते हैं कि @boz अब से फलहीन खोज करने वाला आखिरी था ☺] – Xenos

उत्तर

6

मोबाइल ब्राउज़र में ऑटोप्ले काम करने का कोई मौका नहीं है। एंड्रॉइड और आईओएस इसे अनुमति नहीं देता है और व्यक्तिगत रूप से मुझे लगता है कि यह एक व्यवहार्य बंधन है! कल्पना कीजिए कि आप दूसरी दूसरी वेबसाइट की शुरुआत करेंगे, आप शुरुआत में नाटकों और बदसूरत आवाज खोलेंगे!

लेकिन आप एक छोटे से हैक कर सकते हैं, ताकि उपयोगकर्ता टिप्पणी नहीं करेंगे कि वह वर्तमान में आपके आवेदन के लिए ऑडियो शुरू कर दिया:

  1. आप एक उपयोगकर्ता संपर्क आपके ऑडियो शुरू करने के लिए की आवश्यकता होगी। इसलिए, आपके ऐप या गेम में एक स्टार्टस्क्रीन या स्वागत बटन हो सकता है जिसके लिए मेनमेनू पाने या गेम शुरू करने के लिए क्लिक की आवश्यकता होती है। उस क्लिक ईवेंट से जुड़ें और अपने <audio> के लिए लोड() विधि को कॉल करें।

  2. <audio> की "कैप्प्लेथ्रू" घटना से जुड़ें। जब आपका स्रोत खेलने के लिए तैयार होता है तो यह ईवेंट ट्रिगर होता है। यहां आप अब play(), रोकें() या अन्य इंटरैक्शन की प्रतीक्षा कर सकते हैं। तो ऑडियो तैयार है लेकिन ध्वनि शुरू करने या रोकने के लिए अब आपके पास पूर्ण नियंत्रण है।

  3. मैं आपको मोबाइल क्लाइंट पर ऑडियो स्प्राइट्स का उपयोग करने की सलाह देता हूं। आईओएस (और एंड्रॉइड?) ने सिंगलटन के माध्यम से आंतरिक रूप से ऑडियो समर्थन लागू किया। इसका मतलब है कि आप डेस्कटॉप ब्राउजर में नहीं, 10 ऑडियो तत्वों को एक साथ कर सकते हैं और एक बार में अलग-अलग ध्वनि बजा सकते हैं। आप केवल एक फाइल खेल सकते हैं! तो विभिन्न ध्वनियों के लिए स्रोत को बदलने में काफी समय लगता है। एक ऑडियो स्प्राइट के साथ आप अपनी स्प्राइट्स शुरू कर सकते हैं जब उपयोगकर्ता पहली बार आपकी वेबसाइट या गेम के साथ सहभागिता करता है। अपने स्प्राइट को रोकें और जब आपको ध्वनि बजाने की आवश्यकता होती है तो आपको स्प्राइट की शुरुआत में वर्तमान समय सेट करना होगा और जब आपकी फ़ाइल का वर्तमान समय आपके स्प्राइट के अंत तक पहुंच जाए तो स्प्राइट को रोक दें। एक टाइमअपडेट इवेंट है जहां आप अपने स्प्राइट के वर्तमान समय की जांच कर सकते हैं।

यदि आप अधिक रुचि रखते हैं तो मैं आपके लिए अपने जावास्क्रिप्ट ऑडियो स्प्राइट प्लेयर तैयार कर सकता हूं !!

+0

उत्तर देने के लिए धन्यवाद, दुर्भाग्यवश हमारे गेम को अतिरिक्त उपयोगकर्ता इंटरैक्शन के बिना शुरू करना चाहिए ताकि आपका 'हैक' हमारे लिए काम नहीं करेगा। हम पहले से ही ऑडियो स्प्राइट्स का उपयोग करते हैं और यह ठीक काम करता है (ज्यादातर!)। मैं आपको सही जवाब दूंगा क्योंकि ऐसा लगता है कि अभी कोई अन्य समाधान नहीं है ... –

+0

'ऑडियोकॉन्टेक्स्ट' का उपयोग करने का मौका है; मेरा जवाब https://stackoverflow.com देखें/a/46485784/2342518 – Xenos

+0

क्या आप जानते हैं कि उपयोगकर्ता बटन पर क्लिक करते समय कई अलग-अलग ऑडियो तत्व लोड कर सकता है? –

2

केवल समाधान जो मैंने देखा है वह एक खोल ऐप बनाना है और वेब ऐप को UIWebView के अंदर रखना है।

http://flowz.com/2011/03/apple-disabled-audiovideo-playback-in-html5/

UIWebView.allowsInlineMediaPlayback = YES; 
UIWebView.mediaPlaybackRequiresUserAction = NO; 

मैं भी वास्तव में पता है कि कैसे एक सादे पुराने वेब अनुप्रयोग में ऐसा करना चाहते हैं।

+0

दुर्भाग्यवश हमारे वर्तमान पोर्टफोलियो के HTML5 संस्करण बनाने का पूरा बिंदु यह है कि वे उपकरण अज्ञेयवादी होना चाहिए। UIWebView में इसे लपेटने का अर्थ केवल आईओएस है :-( हालांकि उत्तर देने के लिए धन्यवाद ... –

0

मुझे विश्वास है कि मैंने इसे अपने स्वयं के ऐप के लिए हल किया है।

कदम,

नियंत्रक लोड अप,

फिर ....देखेंडिडलोड

क्या आपका वेब दृश्य HTML लोड करता है: loadHTMLString: htmlFile baseURL: [self getBasePath]];

THEN ... सेट करें मीडिया प्लेबैकर्यूवर यूज़रएक्शन = वेबदृश्य पर नहीं।

यदि आप इसे बहुत जल्द सेट करते हैं, तो मुझे लगता है कि एचटीएमएल के लिए लोड इसे रीसेट करता है।

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