2012-06-22 93 views
2

如何设置一个应用程序,将请求访问联系人权限,然后再提起邮件编辑器?我知道这是相当近的应用程序将这样做。请求权限访问联系人

+2

如果您问的是iOS6中发生的变化,NDA要求您仅在Apple Developer论坛上讨论此问题。 –

+0

据我所知,他在询问获取个人信息之前需要获得许可的应用趋势,例如在公司因没有用户的明确许可而被公司发送电话号码,电子邮件地址等给web服务器之后,在FourSquare中访问个人信息(Path这是一个很好的例子,但也有其他例子)。 – sunrize920

回答

1

由于Apple提供了MFMailComposeViewController它已经可以访问内置的用户联系人,所以不需要授予访问权限。如果你想在其他地方使用用户联系人,你应该看看Address Book Programming Guide

0

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

这里的酥料饼的控制页面的链接:http://developer.apple.com/library/ios/#documentation/uikit/reference/UIPopoverController_class/Reference/Reference.html

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; 

我刚刚输入了这一点,不检查或寻找任何东西,所以有可能是一个错误某处。 无论如何,希望这有助于!