Skip to content

GitLab

  • Projects
  • Groups
  • Snippets
  • Help
    • Loading...
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
    • Contribute to GitLab
  • Sign in / Register
T treasure
  • Project overview
    • Project overview
    • Details
    • Activity
    • Releases
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributors
    • Graph
    • Compare
  • Issues 13
    • Issues 13
    • List
    • Boards
    • Labels
    • Service Desk
    • Milestones
  • Merge requests 0
    • Merge requests 0
  • CI/CD
    • CI/CD
    • Pipelines
    • Jobs
    • Schedules
  • Operations
    • Operations
    • Incidents
    • Environments
  • Packages & Registries
    • Packages & Registries
    • Container Registry
  • Analytics
    • Analytics
    • CI/CD
    • Repository
    • Value Stream
  • Wiki
    • Wiki
  • External wiki
    • External wiki
  • Snippets
    • Snippets
  • Members
    • Members
  • Activity
  • Graph
  • Create a new issue
  • Jobs
  • Commits
  • Issue Boards
Collapse sidebar
  • FE
  • treasure
  • Issues
  • #111

Closed
Open
Created Oct 20, 2022 by zhoudanjie@zhoudanjieDeveloper

app加载WebView时修改userAgent引起的问题

背景

邻小汇app最初版开发时,为了方便h5侧判断机型,app原生和h5项目这么约定的: app原生侧手动设置userAgent,iOS app为”com-ios”,安卓app为”com-android”。 在内部页面里,按这个关键字来判断没有问题。

问题

最近邻小汇h5有加载阿里云的h5的需求。阿里云的页面中有通过userAgent判断机型的处理,我们设置的userAgent内容格式不符合预期,引起了报错。 ios-h5-debug-5-2

解决方案

iOS端将userAgent从

crm-ios

改为标准的userAgent基础上加上crm-ios 比如

Mozilla/5.0 (iPhone; CPU iPhone OS 15_7 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148 crm-ios

其中第一个iPhone是机型值,15_7是系统版本号

H5端按照新的规则,是否包含crm-ios去判断是否app。这样,即使老版本app上传的仍旧是crm-ios,也能通过判断。

iOS端修改代码

- (void)configWebViewUA {
    // 设置global User-Agent
    NSString *additional = @"crm-ios";
    NSString *userAgent = [NSString stringWithFormat:@"Mozilla/5.0 (%@; CPU iPhone OS %@ like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148 %@", [[UIDevice currentDevice] model], [[[UIDevice currentDevice] systemVersion] stringByReplacingOccurrencesOfString:@"." withString:@"_"], additional];
    [[NSUserDefaults standardUserDefaults] registerDefaults:@{@"UserAgent":userAgent}];
    [[NSUserDefaults standardUserDefaults] synchronize];
}

思考

以后有新的项目需要加载webview,不要简单地把userAgent改为很短的自定义内容,不然在加载第三方页面时可能会有问题。 可以在默认ua基础上加自己项目的识别内容。

Edited Oct 20, 2022 by zhoudanjie
Assignee
Assign to
None
Milestone
None
Assign milestone
Time tracking