2011-01-12 12 views
10

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

+0

मुझे आश्चर्य है कि क्यों ऐप्पल उस जानकारी को जांचने के लिए एक तंत्र प्रदान नहीं करता है, कहें, आईट्यून्स फ्रेमवर्क या कुछ। –

उत्तर

12

आप सही रास्ते पर हैं। आपको अपने स्थिर संस्करण वेब पेज पर HTTP अनुरोध करने की आवश्यकता है। ऐसा करने के लिए आप NSURLConnection ऑब्जेक्ट का उपयोग कर सकते हैं। तो कुछ की तरह:

NSURL * url = [NSURL URLWithString:@"http://yourweb.com/version.txt"]; 
NSURLRequest * request = [NSURLRequest requestWithURL:url cachePolicy:NSURLRequestReturnCacheDataElseLoad timeoutInterval:60]; 
_connection = [[NSURLConnection alloc] initWithRequest:request delegate:self]; 
फिर

आपका प्रतिनिधि कार्यान्वयन में:

(void)connection:(NSURLConnection*)connection didReceiveResponse:(NSHTTPURLResponse*)response 
{ 
    if(response.statusCode != 200) 
     // you got an error 
} 

- (void)connection:(NSURLConnection*)connection didFailWithError:(NSError*)error 
{ 
    // again with the errors ... 
} 

// you got some data ... append it to your chunk 
// in your case all the data should come back in one callback 
- (void)connection:(NSURLConnection*)connection didReceiveData:(NSData*)data 
{ 
    [mData appendData:data]; 
} 

- (void)connectionDidFinishLoading:(NSURLConnection *)connection 
{ 
    // your request finished ... check the version here 
} 

तो अपने connectionDidFinishLoading में आप पर एक नजर है mData है कि आप एकत्र किया। बाहर पार्स संस्करण संख्या और यह अपने बंडल संस्करण संख्या की तुलना में:

[self infoValueForKey:@"CFBundleVersion"]; 
+0

बहुत आसान है, जो बहुत अच्छा काम करना चाहिए, धन्यवाद! – BeachRunnerFred

+0

@BeachRunner जो कोई समस्या नहीं है। :) – RedBlueThing

+0

समस्या यह है कि CFBundleVersion गलती से बिल्ड नंबर के साथ पॉप्युलेट किया गया है, संस्करण नहीं। इसे एक्सकोड में आज़माएं: एक बिल्ड नंबर सेट करें जो आपके एप्लिकेशन संस्करण से अलग है। उपरोक्त कॉल बिल्ड नंबर लौटाएगा, क्योंकि एक्सकोड प्लेलिस्ट को गलत तरीके से पॉप्युलेट करता है। यह बिल्ड नंबर को बंडल संस्करण में रखता है। – Oscar

1

मैं एक ही समाधान @RedBlueThing मेरी क्षुधा में से कई में सिफारिश का इस्तेमाल किया था। मैंने इसे एक ऐसी सेवा में बढ़ा दिया है जो अन्य ऐप डेवलपर्स CleverStork पर उपयोग कर सकते हैं - ऐप्स के लिए अद्यतन प्रबंधक। आशा है कि आप इसे पसंद करेंगे :)

4

आप एपस्टोर में http://itunes.apple.com/en/lookup?bundleId=com.easi6.doorsndots जैसे एक प्रश्न बना सकते हैं।

लौटने वाले JSON में एक संस्करण जानकारी है (वर्तमान में ऐपस्टोर पर) जिसे दूसरे की तुलना बंडल में की जा सकती है।

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