iOS 开发实用技术导航
NSHipster 中文版
› http://nshipster.cn/
cocos2d 开源 2D 游戏引擎
› http://www.cocos2d-iphone.org/
CocoaPods
› http://cocoapods.org/
Google Analytics for Mobile 统计解决方案
› http://code.google.com/mobile/analytics/
WWDC
› https://developer.apple.com/wwdc/
Design Guides and Resources
› https://developer.apple.com/design/
Transcripts of WWDC sessions
› http://asciiwwdc.com
Cocoa with Love
› http://cocoawithlove.com/
Cocoa Dev Central
› http://cocoadevcentral.com/
NSHipster
› http://nshipster.com/
Style Guides
› Google Objective-C Style Guide
› NYTimes Objective-C Style Guide
Useful Tools and Services
› Charles Web Debugging Proxy
› Smore
lancegin
V2EX  ›  iDev

iPhone 部分版本默认没有允许 app 访问蜂窝移动数据 有什么好的规避办法吗?

  •  
  •   lancegin ·
    lancegin · Jan 1, 2017 · 17725 views
    This topic created in 3605 days ago, the information mentioned may be changed or developed.

    目前来看,部分国行手机存在这个 bug 。

    设置中 app 没有允许访问蜂窝移动数据导致无网络服务。

    是否可以在 app 打开前判断是否打开了蜂窝移动数据的开关?

    Supplement 1  ·  Jan 1, 2017
    这里谈论的是部分手机出现的,默认不允许 app 访问蜂窝网络数据 并且 没有给出任何提示 的 bug ,并讨论相应的解决办法。
    请各位仔细看清楚大家讨论内容,不要跑偏。
    39 replies  •  2017-01-06 15:00:52 +08:00
    oxoxoxox
    oxoxoxox
    Jan 1, 2017 via iPhone
    1
    不是默认不允许,是 iOS10 的这个功能有 bug ,有时会不能在 APP 打开时弹出网络请求的通知,而且蜂窝数据里面也看不到这个 APP ,修改任意一个 APP 的蜂窝数据设定再打开之前的 APP 就可以弹出通知了
    lancegin
    lancegin
    OP
    Jan 1, 2017 via iPhone
    2
    @oxoxoxox 这个 bug 有点恶心并且不友好。但是现在的情况是用户可以在设置中找到 app 并且可以手动打开蜂窝数据,就是系统默认设置没有打开开关。只有部分手机会出现这个问题,不明白啥情况
    helloSwift
    helloSwift
    Jan 1, 2017 via iPhone
    3
    打开无线局域网助理,然后就会跳出那个选择
    最后记得关闭无线局域网助理就行
    lancegin
    lancegin
    OP
    Jan 1, 2017 via iPhone
    4
    @helloSwift 但不能让用户额外安装一个助理啊
    Duolingo
    Duolingo
    Jan 1, 2017 via iPhone
    5
    @lancegin 无线局域网助理是系统功能
    lancegin
    lancegin
    OP
    Jan 1, 2017 via iPhone
    6
    @codingadog 能不能从 app 本身把这个问题规避呢,直接打开前能判断蜂窝数据开关状态吗?
    helloSwift
    helloSwift
    Jan 1, 2017 via iPhone
    7
    @lancegin 不行,无线局域网助理是目前的最优解,屡试不爽
    lancegin
    lancegin
    OP
    Jan 1, 2017 via iPhone
    8
    @helloSwift 那就有点尴尬了,如果我是 app 的开发者,那我还得引导用户打开无线局域网助理,,囧
    iA7489
    iA7489
    Jan 1, 2017 via iPhone❤️1
    9
    为啥要默认允许

    有些 app 就不想 让它联网
    lancegin
    lancegin
    OP
    Jan 1, 2017 via iPhone
    10
    @iA7489 是这个道理,有些 app 确实不想让它联网,,但是选择权得给用户啊,这个 bug 导致的问题是,默认不联网并且没有任何提示
    http://sspai.com/35720
    VinKing
    VinKing
    Jan 1, 2017
    11
    需要重启一下再打开这个 app 就可以了,这个功能有 bug 。
    ScotGu
    ScotGu
    Jan 1, 2017
    12
    就因为这个 BUG ,以为自己 OTA 升级有问题,害得我用 DFU 重新刷了一次, 结果问题依旧……
    重新下 APP 很痛苦,还得重新排位置。
    lancegin
    lancegin
    OP
    Jan 1, 2017 via iPhone
    13
    @ScotGu 懂得如何解决是好的,不知道怎么解决的,这口锅就背在开发者头上了🤧
    moguiyu
    moguiyu
    Jan 1, 2017
    14
    本来就是开发头上,凭什么默认 app 有权限使用网络啊? ios 又不是安卓。
    lancegin
    lancegin
    OP
    Jan 1, 2017 via iPhone
    15
    @moguiyu 那凭什么默认没有权限呢?
    moguiyu
    moguiyu
    Jan 1, 2017
    16
    @lancegin 因为手机是我的,系统我也信任, APP 必须跪在地上乖乖求我给权限,不然就去吃土吧。
    除非是安卓,即使我有各种守护,那一般是我跪在地上求各位 APP 爹。除非我 ROOT 篡位掉当爷,不过有的小 biao 砸,不开门给 ROOT 爷。
    wclebb
    wclebb
    Jan 1, 2017 via iPhone
    17
    国行就有这个功能,要怪就怪 Android 在中国野蛮发展。
    wclebb
    wclebb
    Jan 1, 2017 via iPhone
    18
    @moguiyu 就是这样。
    楼主作为开发者,没理由不知道。
    lancegin
    lancegin
    OP
    Jan 1, 2017 via iPhone
    19
    @wclebb
    @moguiyu
    两位不要跑偏了,这个话题全篇讨论的都是 iOS 的一个 bug ,就是默认不给你网络权限,并且没有给你跪在地上的机会
    terence4444
    terence4444
    Jan 1, 2017 via iPhone
    20
    碰到这种情况要进设置随便改一个 APP 的网络权限再启动问题 APP 就会弹出网络权限请求。
    Lentin
    Lentin
    Jan 1, 2017
    21
    直接引导用户重启吧
    wclebb
    wclebb
    Jan 1, 2017 via iPhone
    22
    无解,只能等 iOS 10.x 更新
    Totoria
    Totoria
    Jan 1, 2017
    23
    今天刚好遇到这个 bug 。。改了一个其他 app 的权限 再打开 才出现
    ChengLuffy
    ChengLuffy
    Jan 2, 2017
    24
    如果自己的 app 出现问题只能在判定没有网络连接或者网络连接失败后给出引导用户排查问题的方案
    lslqtz
    lslqtz
    Jan 2, 2017
    25
    无解, iOS 10.2 都没修好这个问题。
    你可以判定没有网络连接时给出引导。
    allenhu
    allenhu
    Jan 2, 2017 via Android
    26
    果粉表示你不需要这个功能
    lancegin
    lancegin
    OP
    Jan 2, 2017
    27
    @allenhu 为什么觉得不需要呢
    lancegin
    lancegin
    OP
    Jan 2, 2017
    28
    @ChengLuffy
    @lslqtz
    @wclebb
    @Lentin
    目前只能这么尴尬的解决了,确实没有什么好的办法
    wclebb
    wclebb
    Jan 2, 2017 via iPhone
    29
    话说这个问题,我遇到的很少。
    或者我遇到的问题可能跟你们一样,只不过我的解决方案是:等。

    遇到新软件弹出要求连接时,我给允许,然后等一分钟就可以了。不行则直接强退,一般可以了。

    但这不是优雅解决的方案。
    lancegin
    lancegin
    OP
    Jan 2, 2017
    30
    @wclebb 确实遇到的很少 但是只要有一个用户遇到 那他就会下意识觉得 ok 你这个 app 就是一个有问题的 app ,绝对不会想到说是 iOS 系统本身的 bug 这个才是最蛋疼也可以说对于开发者而言很不公平的地方
    wclebb
    wclebb
    Jan 2, 2017
    31
    @lancegin 然而这些用户对开发者来说最好的地方在于,他们最听话。
    给什么权限就给权限,什么位置通知统统同意。

    他不会在意这个权限是什么概念,只在意你的软件是干嘛的。

    所以你可以做一个简单的判断,如果能获取能够区分手机型号的(至少能判断是国行手机就行了了。)
    然后你做个简单的教程,就可以了。

    我想到最简单方法就是区分软件,在中国就做中国特别版教育,国外就不做特别版教育。在中国就教用户怎么开启,遇到问题就怎么大概怎么解决。
    icris
    icris
    Jan 3, 2017
    32
    @lancegin
    "那凭什么默认没有权限呢?"
    -- 因为第一次打开应用必然没有权限,如果默认有权限,就算不出 bug 用户给了权限应用第一次网络连接也已经失败了,很多应用都是第一次的初始化失败只能给了权限后强退重新打开,就是因为不“默认没有权限”。
    lancegin
    lancegin
    OP
    Jan 3, 2017
    33
    @icris 这里“默认没有权限”的意思是 没有给用户选择权,直接禁止了用户的网络权限,,如果第一次打开给了选择权那就不存在这个问题了
    galenzhao
    galenzhao
    Jan 3, 2017
    34
    在 didapear 后 while 下判断是否禁用网络
    一直 alert+尝试 request
    我们是这个干的
    icris
    icris
    Jan 3, 2017
    35
    @lancegin
    "第一次打开给了选择权"的时候直到用户选择了同意之前,应用仍然没有联网权限。
    lancegin
    lancegin
    OP
    Jan 3, 2017
    36
    @icris 这是自然 也不次纠结与这个细节 问题出在这个选择权有没有给出上面


    @galenzhao 差不多的解决方式 直接 alert 进行引导
    icris
    icris
    Jan 3, 2017
    37
    @lancegin
    所以“默认 app 有权限使用网络”是错的,而且确实有很多应用第一次初始化请求失败给了权限以后没地方触发这个请求了只能强退。
    lancegin
    lancegin
    OP
    Jan 3, 2017
    38
    @icris "默认 app 有权限"或者“默认 app 没有权限”都是错的,选择权需要给用户
    iimgal
    iimgal
    Jan 6, 2017
    39
    打开无线局域网助理再关掉, 或者改变一下任何一个其他应用的无线网设置.
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   893 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 57ms · UTC 20:34 · PVG 04:34 · LAX 12:34 · JFK 15:34
    ♥ Do have faith in what you're doing.