我正在尝试访问Xamarin.iOS应用中的地址簿,并且尝试了以下代码:

var addressBook = AddressBook.ABAddressBook.Create(out NSError error);
if (addressBook != null)
{
    addressBook.RequestAccess((bool granted, NSError accessError) =>
    {
        if (granted)
        {
            //Do something
        }
    });
}


此代码在if中运行,并且adressBook不为null。但是addressBook.RequestAccess(...)不会运行,并且应用程序不退出catch子句就退出。

有人知道这段代码是什么问题吗?如何检测此类错误,在哪里查找日志或其他内容?

我在连接到Mac和iPhone 6的Windows 10上的Visual Studio 2017中使用Xamarin

最佳答案

您是否在info.plist中包括了NSContactsUsageDescription键?

例如:

<key>NSContactsUsageDescription</key>
<string>Your explanation to the user</string>


不这样做通常会导致无提示崩溃。

另请注意,自iOS 9起,不推荐使用地址簿API,而推荐使用Contacts Framework。因此,您可能想要实现这一点。

关于c# - Xamarin iOS访问通讯录请求权限中断应用程序,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43318689/

10-17 00:28