相关疑难解决方法(0)

通过javascript检测ipad/iphone webview

如果网站在ipad safari中运行或在应用程序WebView中运行,是否有办法通过javascript进行区分?

javascript webview ipad ios

87
推荐指数
6
解决办法
8万
查看次数

使用iPhone UIWebView时的Asp.Net Forms身份验证

我正在编写一个使用表单身份验证的Asp.net MVC 2应用程序,目前我的iPhone应用程序在通过Web进行身份验证/登录时遇到问题.我们开发了一个使用UIWebView控件的简单iPhone应用程序.在这个阶段,所有应用程序都会导航到我们的Asp.Net网站.简单吧?问题是,用户无法通过登录页面.重复步骤是:

  • 打开iPhone应用程序.
  • 该应用程序导航到主页.
  • 用户未经过身份验证,因此会重定向到登录屏幕/页面
  • 用户输入正确的用户名和密码.点击提交.
  • 在服务器端,用户经过身份验证,并生成cookie并使用FormsAuthentication.GetAuthCookie发送到客户端.
  • 服务器发送是重定向以将用户发送到正确的主页.

但是用户然后被重定向到BACK登录屏幕!

我已经对此进行了一些广泛的调试,我所知道的是:

cookie被发送到客户端,客户端正在存储cookie.在iPhone调试器中验证了这一点,并使用Javsascript在页面上显示cookie数据.cookie正被发送回服务器.在Visual Studio调试器中验证了这一点.它是正确的cookie(它与设置的相同).User.Identity.IsAuthenticated属性由于某种原因返回false,即使auth cookie包含在Request对象中.我已经确认iPhone应用程序已设置为接受cookie,并且它们在客户端上.

这是有趣的事情:如果您在iPhone上打开Safari浏览器并直接访问我们的网站,它可以正常工作.

它在iPad上也具有相同的行为,因为它没有通过登录屏幕.这种模拟器和设备上的重复.

这个网站已经通过IE 7-8,Safari(适用于Windows),Blackberry,IEMobile 6.5,Phone 7进行了测试,可以找到它.唯一不适用的情况是iPhone应用程序中的UIWebView.

asp.net authentication cookies asp.net-mvc uiwebview

61
推荐指数
4
解决办法
2万
查看次数

UIWebView iOS5更改用户代理

如何在iOS 5中更改UIWebView的用户代理?

到目前为止我做了什么: 使用委托回调,拦截NSURLRequest,创建一个新的url请求并将其用户代理设置为我想要的任何内容,然后下载数据并使用"loadData:MIMEType:...重新加载UIWebView" ".

问题: 这会导致无限递归,我加载数据,调用代理返回,实习生调用委托....

这是委托方法:

- (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;
}
Run Code Online (Sandbox Code Playgroud)

cocoa-touch objective-c uiwebview ios

35
推荐指数
1
解决办法
3万
查看次数

在WKWebview中设置useragent

如何在WKWebView中设置自定义的useragent字符串?我正在尝试嵌入我的应用程序版本,以便我的服务器端可以看到可用的功能.我找到了以下方法:

let userAgent = "MyApp/1.33.7"
request.setValue(userAgent, forHTTPHeaderField: "User-Agent")

NSURLConnection.sendAsynchronousRequest(request, queue: NSOperationQueue.mainQueue()) {(response, data, error) in
    let content = NSString(data: data, encoding: NSUTF8StringEncoding)
    self.web!.loadHTMLString(content!, baseURL: url)
}
self.web!.loadRequest(request);
Run Code Online (Sandbox Code Playgroud)

但这意味着仅为该单个请求设置了useragent.第一个其他请求(例如转发)将意味着再次将useragent重置为默认值.如何更永久地配置wkwebview以使用我的自定义useragent字符串?

user-agent ios wkwebview

33
推荐指数
3
解决办法
3万
查看次数

如何获取UIWebView用户代理

我在使用一台远程服务器时遇到问题.我的应用程序使用[NSData initWithContentsOfURL:]方法向服务器发出请求,作为响应,我得到了我打开的网站的网址UIWebView.

问题是这些请求具有不同的User-Agent,并且服务器无法正确地为我服务,因为它期望我使用相同的User-Agent发送所有请求.我知道如何更改用户代理(例如,在UIWebView(iPhone SDK)中更改用户代理)但我真正想要的是以某种方式获取UIWebView用户代理并将其设置为[NSData initWithContentsOfURL:]以避免服务器端出现问题

iphone user-agent uiwebview ios4

26
推荐指数
2
解决办法
2万
查看次数

使用PHP/Javascript检测应用内浏览器(WebView)

我为iOS和Android开发了一个应用程序,它使用应用程序内浏览器(Webview)从我的网络服务器访问HTML文件.

我不希望用户在不使用该应用程序的情况下访问此文件.如果用户使用应用程序访问文件或直接通过智能手机/平板电脑/计算机上的浏览器,是否有可能检测到?我认为使用PHP的解决方案要好得多,因为可以关闭Javascript.至少Google Analytics可以区分Safari和Safari(应用内).它应该适用于iOS和Android的每个版本.

谢谢你的帮助.


经过多次尝试,我终于找到了适合我的解决方案!

iOS: 您可以使用用户代理检测Safari和应用内浏览器之间的差异.可能有一个更好的解决方案,但它的工作原理.

// Safari (in-app)
if ((strpos($_SERVER['HTTP_USER_AGENT'], 'Mobile/') !== false) && (strpos($_SERVER['HTTP_USER_AGENT'], 'Safari/') == false) {
    echo 'Safari (in-app)';
}
Run Code Online (Sandbox Code Playgroud)

Android: 应用程序中的包名称存储在PHP变量中$_SERVER['HTTP_X_REQUESTED_WITH'].

// Android (in-app)
if($_SERVER['HTTP_X_REQUESTED_WITH'] == "com.company.app") {
    echo 'Android (in-app)';
}
Run Code Online (Sandbox Code Playgroud)

正如Tim van Elsloo已经注意到HTTP标头可以伪造,这不是绝对安全的.

javascript php xcode android ios

18
推荐指数
2
解决办法
2万
查看次数

iPad中的Facebook:UIWebView - 呈现触摸而不是标准网络

直到几天前它运行良好:在iPad/UIWebView中打开facebook.com作为标准网络呈现.现在Facebook被强制呈现为触摸 - 就像URL是http://touch.facebook.com一样.无论UIWebView框架大小如何,都会发生这种情况.这是一个简单的代码,主视图控制器可以看到问题:

UIWebView *wv = [[UIWebView alloc] initWithFrame:self.view.frame];
NSURLRequest *req = [NSURLRequest requestWithURL:[NSURL  URLWithString:@"http://www.facebook.com"]];
[wv loadRequest: req];
[self.view addSubview: wv];
Run Code Online (Sandbox Code Playgroud)

我尝试按照此处的建议更改用户代理- 没有用.

facebook uiwebview iad

8
推荐指数
1
解决办法
977
查看次数

如何删除先前通过[NSUserDefaults registerDefaults:]调用注册的值

[NSUserDefaults registerDefaults:]在应用程序启动时通过调用注册了一堆首选项值.我需要在某个阶段用新的替换它们,但新值范围(键设置)小于初始值.所以在我[NSUserDefaults registerDefaults:]再次打电话之后,我有一些新的价值观,其中一些旧的未被替换.是否有可能删除以前注册的值?

cocoa nsuserdefaults

7
推荐指数
2
解决办法
1573
查看次数

在 UIWebView 内的网页中播放视频时出现“插件处理加载”对话框

如果我单击 UIWebView 显示的网页中的视频链接,则视频会播放,但会弹出一个对话框,显示“插件已处理负载”。

有谁知道为什么会发生这种情况以及如何阻止它发生?

这不是以下内容的重复:

在 iOS4 中 UIWebView 播放视频损坏?

因为我没有创建具有零大小框架的 UIWebView,这被描述为原因。

(我使用的是 iOS 5)

iphone quicktime typo3 uiwebview ios

6
推荐指数
1
解决办法
3万
查看次数

在UIWebView中启用Cookie

如何在使用UIWebView窗口的iPhone应用程序中启用cookie,以便我的登录系统能够正常工作?

iphone cookies uiwebview ios ios5

6
推荐指数
2
解决办法
2万
查看次数

iOS:将自定义NSURL传递给NSURLProtocol

我需要传递一些额外的信息,UIWebView loadRequest:以便它达到我的实现NSURLProtocol.信息不能绑定,NSURLRequest因为信息也必须保留NSURLRequest mainDocumentURL.所以我用它进行了子类化NSURL和构造NSURLRequest.我已经知道NSURLRequest到达NSURLProtocol startLoading的不是我所提供的实例UIWebView loadRequest,所以我也实现NSURL copyWithZone了,天真地期望URL加载系统将使用它.

现在,NSURLProtocol canInitWithRequest不是人们合理预期的,而是至少4次startLoading.前两次,传入NSURLRequest仍然包含我的自定义NSURL实现.然后叫一个不幸的内部代码CFURLCopyAbsoluteURL询问了absoluteURL我的定制NSURL和下canInitWithRequest(以及随后的startLoading)已经得到了全新的NSURLRequest新鲜NSURL的吧.copyWithZone永远不会被调用,我的子类NSURL丢失了.

在我放弃并实现一个低级且易碎的解决方案并将内容直接附加到URL字符串之前,我想问更高级别的向导,他们是否看到了如何捕获NSURLProtocol雷达上的初始闪烁或如何CFURLCopyAbsoluteURL进入的方法携带我的自定义实例.我试图NSURL absoluteURL通过再次返回我的自定义NSURL类的新实例来破解,但它没有帮助.我已经在NSURLProtocol setProperty功能上看到了一些承诺,但现在看起来很无用.URL加载系统快乐地创建所有内容的新实例,并且NSURLRequest到达时NSURLProtocol似乎与UIWebView仅偶然输入的内容相同.

更新:好的我想保持帖子尽可能短,但即使是第一个回复是要求技术背景,所以我们去:我UIWebView在应用程序中有多个s.这些视图可以同时运行请求,绝对可以运行相同URL的请求.这就像桌面浏览器中的标签.但我需要区分哪个UIWebViewNSURLRequest到达的每个特定的起源NSURLProtocol …

nsurl nsurlrequest nsurlprotocol ios

6
推荐指数
1
解决办法
1358
查看次数

登录在Safari中工作但不在UIWebView中工作

我有一个简单的iOS应用程序,它只显示一个UIWebView需要登录的特定网站.如果我运行我的应用程序并尝试登录该站点只需重新显示登录页面(没有错误消息).如果我使用Safari,我可以登录同一个网站.我的错在哪里UIWebView?如果重要,该网站使用SSL/https.

iphone ios

1
推荐指数
1
解决办法
2094
查看次数

我如何告诉网站它是一个UIwebview,所以它可以使用CSS重绘视图

我有一个想要访问Amazon.com的UIwebview,当我加载amazon.com时,它的格式与我从iphone safari那里去的格式不同.什么告诉像amamzon这样的网站重绘iphone?这是我的代码:

 - (void)viewDidLoad {

NSString *urlAddress = @"http://www.amazon.com/Inventive-Gadgets-Inc-PQFan-Professionally/dp/B000V8ASR6";

//Create a URL object.
NSURL *url = [NSURL URLWithString:urlAddress];

//URL Requst Object
NSURLRequest *requestObj = [NSURLRequest requestWithURL:url];

//Load the request in the UIWebView.
[webView loadRequest:requestObj];
 }

- (IBAction) gotofourth{
[self dismissModalViewControllerAnimated:YES];
}
Run Code Online (Sandbox Code Playgroud)

任何帮助都会很棒.

谢谢

iphone mobile-safari uiwebview

0
推荐指数
1
解决办法
1395
查看次数