ios – 如何测试是否允许包含应用程序的“允许完全访问”权限?

ios – 如何测试是否允许包含应用程序的“允许完全访问”权限?,第1张

概述我正在做一个键盘扩展项目.在应用程序代码的某些点上,我需要测试用户是否已授予键盘扩展的“允许完全访问权限”权限.这笔交易是我需要从应用程序端进行这些测试,并在此基础上让用户访问键盘设置或在未授予权限的情况下提醒他. 问题是这里提供的方法如下: func isOpenAccessGranted() -> Bool { return UIPasteboard.generalPasteboard 我正在做一个键盘扩展项目.在应用程序代码的某些点上,我需要测试用户是否已授予键盘扩展的“允许完全访问权限”权限.这笔交易是我需要从应用程序端进行这些测试,并在此基础上让用户访问键盘设置或在未授予权限的情况下提醒他. @H_502_7@

@H_502_7@问题是这里提供的方法如下:

@H_502_7@

func isOpenAccessGranted() -> Bool {    return UIPasteboard.generalPasteboard().isKindOfClass(UIPasteboard)}
@H_502_7@要么:

@H_502_7@

func isOpenAccessGranted() -> Bool {let fm = NSfileManager.defaultManager()let containerPath = fm.containerURLForSecurityApplicationGroupIDentifIEr(                    "group.com.example")?.pathvar error: NSError?fm.contentsOfDirectoryAtPath(containerPath!,error: &error)if (error != nil) {    NSLog("Full Access: Off")    return false}NSLog("Full Access: On");return true}
@H_502_7@仅从键盘侧工作,因为键盘是唯一受此权限影响的键盘.从包含app方面,这两个方法总是返回true.

@H_502_7@有人知道从应用程序端测试这个的可靠方法吗?

解决方法 考虑在您的应用和键盘中使用NSUSerdefaults.为了使扩展程序和应用程序能够共享相同的NSUserdefaults,您只需打开应用程序组即可.在项目导航器中选择项目下的主应用程序目标,然后转到功能并通过将其切换为打开来启用应用程序组,添加您的开发人员配置文件并修复可能出现的问题.


现在创建一个新容器.根据帮助,它必须以“group.”开头,所以给它命名为“group.com.mycompany.myapp”.选择Today Extension目标并重复此应用程序组的切换过程.不要创建新组,而是选择此新创建的组以表示Today Extension是组的一部分. @H_502_7@

@H_502_7@这将允许您与容器应用程序共享相同的NSUserdefaults.
您现在要做的就是使用您提供的代码并将保存方法添加到NSUserdefaults,如下所示:

@H_502_7@

func isOpenAccessGranted() -> Bool {    let defaults = NSUserDefaults.standardUserDefaults()    let fm = NSfileManager.defaultManager()    let containerPath = fm.containerURLForSecurityApplicationGroupIDentifIEr(        "group.com.example")?.path    var error: NSError?    fm.contentsOfDirectoryAtPath(containerPath!,error: &error)    if (error != nil) {        NSLog("Full Access: Off")        defaults.setBool(false,forKey: "hasFullAccess")        return false    }    NSLog("Full Access: On");    defaults.setBool(true,forKey: "hasFullAccess")    return true}
@H_502_7@在键盘扩展名中执行此 *** 作.然后在您的父应用中,只需检索它们并根据它们的价值行事.

@H_502_7@

let hasFullAccess : Bool = NSUserDefaults.standardUserDefaults().boolForKey("hasFullAccess")if hasFullAccess{    //User granted full access}else{    //User dIDn't grant full access}
@H_502_7@如果用户没有授予完全访问权限,则显示警报,否则代码消失!

@H_502_7@编辑:
在联系Apple的技术开发人员支持后,他们告诉我,目前无法以任何支持的方式实现这一目标.他们的回应如下:

@H_502_7@

@H_502_7@Our engineers have revIEwed your request and have concluded that there
is no supported way to achIEve the desired functionality given the
currently shipPing system configurations.

@H_502_7@If you would like for Apple to consIDer adding support for such
features in the future,please submit an enhancement request via the
BUG Reporter tool at 07001.

@H_502_7@希望有所帮助,朱利安

总结

以上是内存溢出为你收集整理的ios – 如何测试是否允许包含应用程序的“允许完全访问”权限?全部内容,希望文章能够帮你解决ios – 如何测试是否允许包含应用程序的“允许完全访问”权限?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1027330.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-23
下一篇2022-05-23

发表评论

登录后才能评论

评论列表(0条)

    保存