2016-04-13 38 views
2

ile WebView ile ayarlayın Kullanıcı tarafı dizesini bir Web Görünümünde değiştirmek istiyorum, böylece sunucu tarafında isteğimin yerel uygulamadan geldiğini algılayabiliyorum. Bunu WebView'de kaynak prop kullanarak yapmak istiyorum.Kullanıcı Arayüzü, tepkisel yerel

Bunu IOS ve Android için nasıl yapabilirim?

cevap

4

WebView'inizde bir pervane olarak ayarlayabilirsiniz.

aşağıdaki yapıyorum: Android'de iOS'ta

(AppDelegate.m içinde belirlediğim UserAgent)

NSString *deviceType = [UIDevice currentDevice].model; 
UIWebView *webView = [[UIWebView alloc] initWithFrame:CGRectZero]; 
NSString *oldAgent = [webView stringByEvaluatingJavaScriptFromString:@"navigator.userAgent"]; 
NSString *newAgent = [oldAgent stringByAppendingString:@" MYAPPNAME - iOS - "]; 
newAgent = [newAgent stringByAppendingString:deviceType]; 
NSDictionary *dictionnary = [[NSDictionary alloc] initWithObjectsAndKeys:newAgent, @"UserAgent", nil]; 
[[NSUserDefaults standardUserDefaults] registerDefaults:dictionnary]; 

(benim WebView'da JS UserAgent set):

<WebView 
    userAgent={DeviceInfo.getUserAgent() + " - MYAPPNAME - android "} 
    ref={"WEBVIEW"} 
    automaticallyAdjustContentInsets={false} 
    source={{uri: this.state.url}} /> 

Şimdi her zaman "DeviceInfo - MYAPPNAME - Platform" gibi bir kullanıcı yaşıyorum. Senin gibi aynısını yapıyoruz ve nasıl yapması gerekiyor.

+1

iOS tarafını javascript'te yapmak için [rn-ios-user-agent] (https://www.npmjs.com/package/rn-ios-user-agent) paketini kullanabilirsiniz. –

-2

Bu çok kötü bir fikir.

X-MY-CUSTOM-HEADER = MyAppName. 
+1

Yapmak istediğim şey budur, ancak bunu aslında tepkisel yerel WebView kaynak paylaşımında nasıl ayarlayabilirim? – Obromios

+0

Ah, pardon. Soruyu yanlış anladım ve WebView bölümünü kaçırdım. Web sayfalarından gelen isteklere özel başlık eklemenin bir yolu olup olmadığından emin değil. – rooftop

+0

Bu parametreyi sayfa bazında bir sayfada ayarlamamanız, ancak uygulamanın yapılandırma parametrelerinin bir parçası olarak ayarlamanız gerektiği anlamına gelir. Cevabınızı Beto Caldas'ın cevabı yerine kabul edersem, Xcode projesinde nerede ve nasıl X-MY-ÖZEL-HEADER'ı ayarlayabileceğimi açıklayabilir misiniz? Bu, diğer tüm başlık bilgilerini aynı şekilde ör. IOS sürümü vb? – Obromios

1

android için windows phone user-agent ve ios

Android:

mWebView.getSettings().setUserAgentString("Mozilla/5.0 (compatible; MSIE 10.0; Windows Phone 8.0; Trident/6.0; IEMobile/10.0; ARM; Touch; NOKIA; Lumia 920)"); 

IOS: Sadece özel bir başlık kullanmak

[[NSUserDefaults standardUserDefaults] registerDefaults:[NSDictionary dictionaryWithObject:@"Mozilla/5.0 (compatible; MSIE 10.0; Windows Phone 8.0; Trident/6.0; IEMobile/10.0; ARM; Touch; NOKIA; Lumia 920)" forkey:@"UserAgent"]]; 
+0

IOS için önerdiğin şeyi denedim, '' 'AppDelegate.m''' dosyasına koydum ve' '' '' '' '' '' '' 'DictionaryWithObject: forkey; '' ' – Obromios

+0

uiwebview'i kullandığınız aynı sınıf –

0

Bu bir cevap değil, ama bir çözüm.

Yapmak istediklerim, raylar sunucusundaki rubyuma bir isteğin mobil safariden mi yoksa yerel-yerel uygulamamın webView'inden mi olduğunu belirlemek olduğunu anladım. Bu sorunu çözmek için, sadece browser mücevher yüklü ve sonra

browser = Browser.new(request.user_agent) 
from_app = browser.platform.ios_webview? 

birisi benim asıl soruya net bir cevap verebilir, ben yerine mayın cevabını seçecektir yaptı.

İlgili konular