2

您如何设置一个应用程序,在启动邮件编辑器之前请求访问联系人的权限?我知道应用程序会这样做是最近的事。

4

3 回答 3

1

由于 Apple 提供了MFMailComposeViewController它已经可以访问内置的用户联系人,因此无需授予访问权限。如果您想在其他地方使用用户联系人,您应该查看地址簿编程指南

于 2012-06-22T20:26:58.273 回答
0

这是一个简单的例子,因为我不知道你打算做什么。你有一个 UIButton,上面写着“访问联系人”。当他们单击按钮时,您将让按钮运行一个方法……我们称之为 generatePopover。那么 generatePopover 应该创建一个 UIPopOverController 并在其上声明一个请求访问联系人的权限。这个视图上有两个按钮,接受和拒绝。Decline 什么都不做,accept 允许您继续并拉起邮件控制器。

这是弹出控制器页面的链接:http: //developer.apple.com/library/ios/#documentation/uikit/reference/UIPopoverController_class/Reference/Reference.html

于 2012-06-22T20:37:43.153 回答
0

你可以这样做:

//Header (.h)
@interface yourClass : superClass <UIAlertViewDelegate>
@property (nonatomic) BOOL alertShown;
@property (nonatomic) BOOL permissionGranted;

//Implementation (.m)
@synthesize alertShown, permissionGranted;

- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex{

    if(buttonIndex == 1){

        self.permissionGranted = YES;
    }
    /*If you weren't sure what index the "Yes" button was at, you could do this instead:
    if(buttonIndex == alertView.firstOtherButtonIndex){

        self.permissionGranted = YES;
    }
    Or this:
    if([buttonTitleAtIndex:buttonIndex isEqualToString:@"Yes"]){

        self.permissionGranted = YES;
    }*/
}

-(void)composeMail{
    if(!self.alertShown){

         UIAlertView *permissionsAlert = [[UIAlertView alloc] initWithTitle:@"Permission"
                                                              message:@"Permission to access contacts?"
                                                             delegate:self
                                                    cancelButtonTitle:@"No"
                                                    otherButtonTitles: @"Yes"];
        [permissionsAlert show];
    }
    if(self.alertShown && self.permissionGranted){

        //access mail/contacts
    }
}
//viewDidLoad
self.alertShown = NO;
self.permissionGranted = NO;

我只是在没有检查或查找任何内容的情况下输入了此内容,因此某处可能有错误。无论如何,希望这会有所帮助!

于 2012-06-23T00:21:57.053 回答