iOS 11在访问设备上的某些功能时引入了许多有关权限的有趣更新。 我试图在Xamarin.Forms应用程序中使用Geolocator Plugin访问用户位置时,首先注意到这些更改。 令我惊讶的是,没有发生什么。 在进一步调查应用程序的输出后,我注意到一个消息,说明我错过了什么!
这对您的应用程序意味着什么?它与您可能正在使用的任何插件有什么关系? 这篇文章解释了我在使用两个非常常见的插件Xam.Plugin.Geolocator和Xam.Plugin.Media时发现的内容。
更改位置权限
开发人员必须在iOS 11的Info.plist文件中同时包含NSLocationWhenInUseUsageDescription和NSLocationAlwaysAndWhenInUseUsageDescription。大多数开发人员也希望支持早期版本的iOS,这意味着您还需要包含第三个键NSLocationAlwaysUsageDescription。 NSLocationAlwaysAndWhenInUsageDescription键是iOS 11的新功能,可帮助开发人员采用新的推荐方法来请求权限。 Apple建议应用程序首先请求使用“正在使用”访问级别的位置使用权限。 然后,在获得信任的一段时间之后,应用程序可以更自信地请求始终访问级别。 重要的是要注意,应用程序只能请求“始终”级别一次。
以下是更新的info.plist文件的相关部分看起来像使用Geolocator示例应用程序:
点击(此处)折叠或打开
- key>NSLocationAlwaysUsageDescription/key>
- string>Need location for geolocator plugin./string>
-
- key>NSLocationAlwaysAndWhenInUseUsageDescription/key>
- string>Need location for geolocator plugin./string>
-
- key>NSLocationWhenInUseUsageDescription/key>
- string>Need location for geolocator plugin./string>
对照片权限的更改
在以前的iOS版本的info.plist中需要一个单键NSPhotoLibraryUsageDescription,用于访问用户的照片库。 iOS 11添加了一个新密钥,以便从只读访问权限分离只读访问。 如果您的应用程序需要将图像保存到照片库中,则需要新的NSPhotoLibraryAddUsageDescription键,而从照片库读取图像需要旧的NSPhotoLibraryUsageDescription键。
更新您的Xamarin插件
The Xamarin Plugins have been very popular in the community ever since they were announced. The Geolocator, Media and Permissions plugins are ready for your apps and iOS 11. If your not familiar with Plugins, be sure to check out the guide in the Xamarin Developer Center where you can learn more about which ones are available and how to create them.Xamarin插件自从宣布以来一直在社区中非常受欢迎。 Geolocator,Media和Permissions插件已经为您的应用和iOS 11准备了。如果您不熟悉插件,请务必查看Xamarin开发人员中心的指南,您可以在其中了解更多有关哪些可用的内容以及如何创建它们。