मैं पूरी तरह से जावास्क्रिप्ट में एक iPhone ऐप कैसे लिख सकता हूं, यह सिर्फ एक वेब ऐप बनाने के बिना?


84

मैं ओब्ज-सी सीखने का समय नहीं लेना चाहता। मैंने वेब एप्लिकेशन प्रोग्रामिंग करते हुए 7+ वर्ष बिताए हैं। क्या वेबव्यू का उपयोग करने का कोई तरीका नहीं होना चाहिए और सिर्फ प्रोजेक्ट के संसाधनों से फाइलों को खींचते हुए पूरे ऐप को जावास्क्रिप्ट में लिखना चाहिए?

जवाबों:


71

मैंने आसपास खोज करने के बाद उत्तर पाया। यहाँ मैंने क्या किया है:

  1. XCode में एक नया प्रोजेक्ट बनाएं। मुझे लगता है कि मैंने व्यू-आधारित ऐप का उपयोग किया है।

  2. अपने इंटरफ़ेस पर WebView ऑब्जेक्ट खींचें और आकार बदलें।

  3. अपने WebViewController.m (या इसी तरह फ़ाइल का नाम, आपके विचार के नाम पर निर्भर करता है) के अंदर, दृश्यदर्शी विधि में:

    NSString * filePath = [[NSBundle mainBundle] pathForResource: @ "index" ofType: @ "html"];  
    NSData * htmlData = [NSData dataWithContentsOfFile: filePath];  
    अगर (htmlData) {  
      NSBundle * बंडल = [NSBundle mainBundle]; 
      NSString * पथ = [बंडल बंडल];
      NSString * fullPath = [NSBundle pathForResource: @ "index" ofType: @ "html" inDirectory: path];
      [webView loadRequest: [NSURLRequest requestWithURL: [NSURL fileURLWithPath: fullPath]]];
    }
  4. अब आपके द्वारा प्रोजेक्ट में संसाधनों के रूप में जोड़ी गई कोई भी फाइल आपके वेब ऐप में उपयोग के लिए उपलब्ध है। मुझे javascript और css और इमेज फाइल्स सहित एक index.html फ़ाइल मिली है जिसमें कोई समस्या नहीं है। अब तक मैंने केवल यही पाया है कि मैं नए फोल्डर नहीं बना सकता, इसलिए सभी फाइल रिसोर्स फोल्डर को अव्यवस्थित कर देती हैं।

  5. ट्रिक: सुनिश्चित करें कि आपने फ़ाइल को XCode में संसाधन के रूप में जोड़ा है या फ़ाइल उपलब्ध नहीं होगी। मैं XCode में एक खाली फ़ाइल जोड़ रहा हूं, फिर खोजक में शीर्ष पर अपनी फ़ाइल खींच रहा हूं। वह मेरे लिए काम कर रहा है।

नोट: मुझे पता है कि Obj-C को सीखना मुश्किल नहीं होना चाहिए। लेकिन जब से मेरे पास जेएस में यह ऐप पहले से ही मौजूद है और मुझे पता है कि यह सफारी में काम करता है, तो यह मेरे लिए बहुत तेज़ है। किसी दिन मुझे यकीन है कि मुझे टूटना होगा और Obj-C सीखना होगा।

कुछ अन्य संसाधन जो मुझे मददगार लगे:

जावास्क्रिप्ट से ओब्ज-सी बुलाना : जावास्क्रिप्ट से ऑब्जेक्टिव-सी बुलाना

Obj-C से जावास्क्रिप्ट कॉलिंग: वेब हैकर्स के लिए iphone ऐप डेवलपमेंट

एप्लिकेशन बंडल से फ़ाइलें पढ़ना: uiwebview


दिलचस्प रूप से पर्याप्त है, मैं इस सप्ताह के अंत में GitX (मानक MacOS ऐप) के लिए कोड देख रहा था और मुझे लगता है कि यह भी वही है जो वे करते हैं। wiki.github.com/pieter/gitx
Pat Notz

1
अव्यवस्था समस्या के लिए, अपने xcode proj में एक निर्देशिका जोड़ने और "पुनरावर्ती बनाएँ समूह ..." के बजाय "फ़ोल्डर बनाएँ संदर्भ ..." का चयन करने का प्रयास करें।
रिदमिक फिस्टमैन

1
+1। और मुझे पूरा यकीन है कि आप एंड्रॉइड फोन ऐप बनाने के लिए उसी तकनीक का उपयोग कर सकते हैं। और, संभवतः, अन्य स्मार्टफ़ोन अपने ब्राउज़र को जावास्क्रिप्ट का समर्थन करने के लिए विकसित करेंगे और फिर आप उनका भी समर्थन कर सकते हैं। क्रॉस-प्लेटफ़ॉर्म HTML / सीएसएस / जावास्क्रिप्ट 21 वीं सदी का तरीका है। निश्चित रूप से gnarly प्लेटफ़ॉर्म-विशिष्ट मूल कोड फैशन से बहुत पहले चला गया था?
MarkJ

22

Http://www.Ggap.com पर PhoneGap की जाँच करें, वे दावा करते हैं कि यह आपको जावास्क्रिप्ट, HTML और CSS को एक देशी iPhone ऐप में एम्बेड करने की अनुमति देता है।


7

IPhone 2.1 (शायद 2.0) पर ऐसा करने वालों के लिए, आपको स्थानीय डेटा संग्रहण के लिए कोई विशेष सेवा बनाने की आवश्यकता नहीं है। MobileSafari HTML5 / WHATWG SQL डेटाबेस API का समर्थन करता है। यह वही एपीआई है जो डेस्कटॉप सफारी और फ़ायरफ़ॉक्स के हाल के संस्करणों द्वारा समर्थित है।

यदि आप Dojo या ExtJS जैसे टूलकिट का उपयोग कर रहे हैं जो भंडारण अमूर्तता प्रदान करता है, तो आपके कोड को MobileSafari सहित किसी भी आधुनिक ब्राउज़र के बारे में काम करना चाहिए।

परीक्षण करने के लिए, अपने iPhone पर http://robertsanders.name/dev/stackoverflow/html5.html खोलें ।

यदि आप उस पृष्ठ को खोलते हैं तो एक जेलब्रोकेन आईफ़ोन के फाइल सिस्टम को देखें, आपको एक डेटाबेस कहीं / / निजी / var / mobile / Library / WebKit / डेटाबेस / में देखना चाहिए। वहां भी वेब-डीबी की एक निर्देशिका है।

रूट # sqlite3 /pStreet/var/mobile/Library/WebKit/Dat डेटाबेस/Dat डेटाबेस.db SQLite संस्करण 3.5.9 ".help" निर्देशों के लिए दर्ज करें।

sqlite> .डेटाटक seq नाम फ़ाइल


0 मुख्य / निजी / मोबाइल / मोबाइल / सीमाएँ / वेब साइट / डेटाबेस / डेटाबेस डेटाबेस

साइक्लाइट> .टेबल

डेटाबेस उत्पत्ति

डेटाबेस से sqlite> चुनें *;

1 | http_robertsanders.name_0 | नोटटेस्ट | डेटाबेस | एपीआई उदाहरण | 20000 | 000000000000000101b

साइक्लाइट> ओरिजिन से * सेलेक्ट करें;

http_robertsanders.name_0 | 5,242,880


4

आप किसी भी obj-C को जाने बिना एक एप्लिकेशन बना सकते हैं। QuickConnectiPhone फ्रेमवर्क आपको ऐसा करने की अनुमति देता है। Http://tetontech.wordpress.com इसका उपयोग कैसे करें और साथ ही आपके द्वारा पूछे गए कार्यों के अन्य तरीकों की जाँच करें ।


2

आपके पास ऑब्जेक्टिव सी में लिखा हुआ देशी रैपर होना चाहिए। इस रैपर में वेब व्यू बनाने के लिए और इंटरनेट में दिए गए पते पर नेविगेट करने के लिए आवश्यक कोड (जैसे, 10) की कुछ पंक्तियां हो सकती हैं (जहां आपका आवेदन रहता है)। लेकिन इस मामले में आपका आवेदन एक पूर्ण विशेषताओं वाला वेब अनुप्रयोग होना चाहिए (मेरा मतलब है, न केवल जावास्क्रिप्ट का उपयोग करें, बल्कि मार्कअप के लिए कुछ HTML भी है)।


2

मैं इसी समस्या में भाग गया। मेरे पास पहले से ही एक गेम है जो पूरी तरह से जावास्क्रिप्ट में लिखा गया है। मैं एक iPhone के अनुकूल संस्करण बनाना पसंद करूंगा, लेकिन ओबज-सी एक ओवरकिल है। मैंने जो किया वह समाप्त हो गया वेबफ़ोन का उपयोग करके iPhone ऐप के विशेष url को इंगित करने के लिए। इसके बारे में सोचने के बाद, मुझे लगता है कि मैं उन फाइलों को ऐप डायरेक्टरी में ले जा सकता हूं और उन्हें स्थानीय स्तर पर चला सकता हूं।


2

वर्तमान ऐप्पल एपीआई के साथ ऐसा करने का कोई तरीका नहीं है। आपका निकटतम दांव एक साधारण देशी iPhone ऐप लिखना है जो वेबकिट ब्राउज़र को एम्बेड करता है। यह आपको स्थानीय स्तर पर अपने एक्सएचटीएमएल / जेएस एप्लिकेशन को ब्राउज़ करने देगा।

यदि आप डेटा संग्रहीत करना चाहते हैं, तो आपको इसे एक कदम आगे ले जाना होगा और एक हल्के वजन वाले http सर्वर को शामिल करना होगा जो आपके ऐप को सर्वर करता है और डेटा को स्टोर और पुनः प्राप्त करने के लिए कॉल प्रदान करता है। संभवतः आपके लिए एक आदर्श समाधान नहीं है, लेकिन संभवतः एक पूर्ण ओज-सी ऐप की तुलना में कम काम है।

एक साइड नोट के रूप में, ओबज-सी सीखना काफी आसान है। एसडीके में कई उदाहरण हैं। समुदाय मजबूत है और बिना किसी हिचकिचाहट के सवालों के जवाब देगा।


आप जावास्क्रिप्ट के लिए WHATWG / HTML5 SQL भंडारण एपीआई के माध्यम से स्थानीय भंडारण का उपयोग कर सकते हैं। अधिक जानकारी के लिए मेरा जवाब देखें।
रॉबर्ट सैंडर्स

1

मैं थोड़ी देर के लिए फोनगैप का उपयोग कर रहा हूं और यह मेरे लिए सबसे अच्छा परिणाम है। मैं एक हफ्ते में अपना अनुभव पोस्ट करूँगा और साथ ही अपने ऐप के लिंक के साथ भी।


अब सेब द्वारा अनुमोदित blogs.nitobi.com/jesse/2009/11/20/phonegapp-store-approval
Neo42

1

टाइटेनियम मोबाइल भी एक विकल्प है - यह आपको जावास्क्रिप्ट लिखने की अनुमति देता है जो ऑब्जेक्ट-सी में अनुवादित हो जाता है।


क्या यह वास्तव में ऑब्जेक्टिव-सी में अनुवादित है। मुझे लगता है कि यह PhoneGap जैसे वेब ब्राउज़र घटक में चलाया जाता है।
जोनास

0

कम से कम 2 अन्य लोगों ने फोनगैप का उल्लेख किया है, लेकिन मैंने सोचा कि मैं भी यह पोस्ट करूंगा और उल्लेख करूंगा कि Apple ने फोनगैप ढांचे को मंजूरी दे दी है। इसलिए, अब आपको अपना ऐप Apple द्वारा अस्वीकार नहीं किया जाएगा क्योंकि आप फोनगैप का उपयोग कर रहे हैं।

फ़ोनगैप और एप्पल के बारे में ब्लॉग पोस्ट - http://blogs.nitobi.com/jesse/2009/11/20/phonegapp-store-approval/

फोन गैप होम

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.