दिलचस्प पोस्ट
किसी संसाधन सर्वर के लिए OAuth 2.0 एक्सेस टोकन को कैसे मान्य किया जाए? सिंगल कोट्स में PHP में न्यूलाइन प्रिंट करें नॉकआउट + बूटस्ट्रैप 3 रेडियो बटन अजगर में डिफ़ॉल्ट अनुप्रयोग के साथ दस्तावेज़ खोलें कक्षा में वैश्विक चर का उपयोग करें PHP स्क्रिप्ट से एक बैश स्क्रिप्ट निष्पादित SWFobject का उपयोग करके, HTML कंटेनर को सूचित करने के लिए कि SWF समाप्त हो गया है CreateProcess त्रुटि क्यों देता है 1 9 3 (% 1 वैध Win32 ऐप नहीं है) UISegmented आईओएस 7 में यूआईनेविगेशनबार नीचे नियंत्रण एंड्रॉइड में एक कैनवास को बिटमैप छवि में परिवर्तित करना कांगारू के लिए बूटस्ट्रैप का प्रयोग और कोणीय के लिए सामग्री डिज़ाइन जावा में किसी मौजूदा फ़ाइल को पाठ की एक नई पंक्ति कैसे जोड़ें? पदावनत प्रबंधन () समस्या लिनक्स ओओएम किलर द्वारा किस प्रक्रिया को मार डाला गया? क्या कोई ऑनलाइन रेगेक्स बड्डी जैसी नियमित अभिव्यक्ति विश्लेषक है?

UIWebView iOS5 बदलते हुए उपयोगकर्ता-एजेंट

मैं iOS 5 में UIWebView के उपयोगकर्ता-एजेंट कैसे बदल सकता हूं?

मैंने अभी तक क्या किया है: प्रतिनिधि का उपयोग वापस कॉल करें, NSURLRequest को अवरुद्ध करें, एक नया यूआरएल अनुरोध बनाएं और इसे उपयोगकर्ता-एजेंट को जो कुछ भी मैं चाहता हूं, सेट करें, फिर डेटा डाउनलोड करें और "LoadData: MIMEType: … के साथ यूआई वेबबय लोड करें … … । "।

समस्या: यह अनंत रिकर्सन का कारण बनता है, जहां मैं डेटा लोड करता हूं, जो प्रतिनिधि को वापस कॉल करता है, जो निदेशक को कॉल करता है ….

यहां प्रतिनिधि विधि है:

- (BOOL)webView:(UIWebView *)aWebView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType { dispatch_async(kBgQueue, ^{ NSURLResponse *response = nil; NSMutableURLRequest *newRequest = [NSMutableURLRequest requestWithURL:[request URL]]; NSDictionary *headers = [NSDictionary dictionaryWithObject: @"custom_test_agent" forKey:@"User-Agent"]; [newRequest setAllHTTPHeaderFields:headers]; [self setCurrentReqest:newRequest]; NSData *data = [NSURLConnection sendSynchronousRequest:newRequest returningResponse:&response error:nil]; dispatch_sync(dispatch_get_main_queue(), ^{ [webView loadData:data MIMEType:[response MIMEType] textEncodingName:[response textEncodingName] baseURL:[request URL]]; }); }); return YES; } 

वेब के समाधान से एकत्रित समाधान "UIWebView iOS5 बदलते हुए उपयोगकर्ता-एजेंट"

जब आपका ऐप आरंभ होता है, तो कोड को चलाकर "UserAgent" डिफ़ॉल्ट मान को बदलें:

 NSDictionary *dictionary = [NSDictionary dictionaryWithObjectsAndKeys:@"Your user agent", @"UserAgent", nil]; [[NSUserDefaults standardUserDefaults] registerDefaults:dictionary]; 

संपादित करें: मैंने इसे बड़ी सफलता के साथ उपयोग किया है, लेकिन अतिरिक्त विवरण जोड़ना चाहते हैं। एक उपयोगकर्ता एजेंट प्राप्त करने के लिए, आप "डेवलपर" मेनू को सक्षम कर सकते हैं, उपयोगकर्ता एजेंट सेट कर सकते हैं, और उसके बाद इस साइट से कनेक्ट कर सकते हैं ताकि आप इसे प्रिंट कर सकें : WhatsMyAgent इसी तरह आप किसी भी तरह के मोबाइल डिवाइस का उपयोग कर कनेक्ट कर सकते हैं, और इस तरह से भी इसे प्राप्त कर सकते हैं। BTW यह अभी भी iOS7 + में ठीक काम कर रहा है

स्विफ्ट में यह प्रयोग करने के लिए UserAgent ,

 func setUserAgent(){ var userAgent = NSDictionary(objectsAndKeys: "YourUserAgentName","UserAgent") NSUserDefaults.standardUserDefaults().registerDefaults(userAgent as [NSObject : AnyObject]) } 

परीक्षण करने के लिए इसका प्रयोग करें,

 println(WebView.stringByEvaluatingJavaScriptFromString("navigator.userAgent")); 

जब आप संदेश भेजें [aWebView loadData:MIMEType:textEncodingName:baseURL:]

तब एक aWebView shouldStartLoadWithRequest: होना चाहिए, साथ में फिर से, और फिर से – इसलिए आपको एक अनंत पुनर्कथन प्राप्त होगा

आपको अपने dispatch_async() ब्लॉक को कॉल करना प्रतिबंधित करना चाहिए, उदाहरण के लिए कुछ पारंपरिक यूआरएल का उपयोग करके:

 - (BOOL)webView:(UIWebView *)aWebView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType { if ([[[request URL] absoluteString] isEqualToString:@"http://yourdomain.com/?local=true"]) { return YES; } ... dispatch_async(... [aWebView loadData:data MIMEType:[response MIMEType] textEncodingName:[response textEncodingName] baseURL:[NSURL URLWithString:@"http://yourdomain.com/?local=true"]]; ); return NO; }