2008-09-15 20 views
83

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

उत्तर

71

मुझे चारों ओर खोजने के बाद जवाब मिला। यहां मैंने जो किया है:

  1. एक्सकोड में एक नई परियोजना बनाएं। मुझे लगता है कि मैंने व्यू-आधारित ऐप का इस्तेमाल किया था।

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

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

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

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

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

कुछ अन्य संसाधनों मैंने पाया मददगार:

जावास्क्रिप्ट से कॉलिंग Obj सी: calling objective-c from javascript

Obj सी से जावास्क्रिप्ट कॉलिंग: आवेदन बंडल से iphone app development for web hackers

पढ़ना फ़ाइलें: uiwebview

+0

दिलचस्प बात यह है कि, मैं इस सप्ताह के अंत में गिटएक्स (मानक मैकोज़ ऐप) के लिए कोड देख रहा था और मुझे लगता है कि यह वही है जो वे करते हैं। http://wiki.github.com/pieter/gitx –

+1

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

+1

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

2

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

2

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

2

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

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

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

+0

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

7

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

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

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

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

जड़ # sqlite3 /private/var/mobile/Library/WebKit/Databases/Databases.db SQLite संस्करण 3.5.9 निर्देश

SQLite> के लिए ".help" Enter .databases seq नाम फ़ाइल


0 मुख्य /private/var/mobile/Library/WebKit/Databases/Databases.db

SQLite> .tables

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

वर्गमीटर> डेटाबेस से चुनें *;

1 | http_robertsanders.name_0 | NoteTest | डाटाबेस | एपीआई उदाहरण | 20000 | मूल से 0000000000000001.db

SQLite> का चयन करें *;

http_robertsanders.name_0 | 5242880

22

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

4

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

1

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

+0

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

0

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

Blog post about phonegap and Apple - http://blogs.nitobi.com/jesse/2009/11/20/phonegapp-store-approval/

Phone Gap Home

1

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

+0

क्या इसका वास्तव में उद्देश्य-सी में अनुवाद किया गया है? मुझे लगता है कि यह एक फोन ब्राउज़र घटक जैसे फोनगैप में चलाया जाता है। – Jonas

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