Contact
typealias CheckContactPermission = (Bool,ABAddressBook?) -> ()
func checkcontactpermission(pCompletionBlock:CheckContactPermission){
// make sure user hadn't previously denied access
let status = ABAddressBookGetAuthorizationStatus()
if status == .Denied || status == .Restricted {
// Helper.showAlert(ALERTCONTACTPERMISIONDNIED, pobjView: self.view)
// user previously denied, so tell them to fix that in settings
return
}
// open it
var error: Unmanaged?
guard let addressBook: ABAddressBook? = ABAddressBookCreateWithOptions(nil, &error)?.takeRetainedValue() else {
print(error?.takeRetainedValue())
return
}
// request permission to use it
ABAddressBookRequestAccessWithCompletion(addressBook) { granted, error in
dispatch_async(dispatch_get_main_queue(),{
if !granted {
return
}
if granted{
}
})
pCompletionBlock(granted,addressBook)
}
}
func readFromAddressBook(addressBook: ABAddressBookRef){
var arrContacts : [String] = []
var arrEmails : [String] = []
let allPeople = ABAddressBookCopyArrayOfAllPeople(addressBook).takeRetainedValue() as NSArray
for person: ABRecordRef in allPeople{
// Get all the phone numbers this user has /
let unmanagedPhones = ABRecordCopyValue(person, kABPersonPhoneProperty)
let phones: ABMultiValueRef =
Unmanaged.fromOpaque(unmanagedPhones.toOpaque()).takeUnretainedValue()
as NSObject as ABMultiValueRef
var _phone: String = " -- "
let numberOfPhoneNumbers : CFIndex = ABMultiValueGetCount(phones)
for i in 0 ..< numberOfPhoneNumbers {
if((ABMultiValueCopyLabelAtIndex(phones, i)) != nil){
let unmanagedPhone = ABMultiValueCopyValueAtIndex(phones, i)
_phone = Unmanaged.fromOpaque(
unmanagedPhone.toOpaque()).takeUnretainedValue() as NSObject as! String
arrContacts.append(_phone)
}
}
let emailTemp = ABRecordCopyValue(person, kABPersonEmailProperty)
let emails: ABMultiValueRef = Unmanaged.fromOpaque(emailTemp.toOpaque()).takeRetainedValue() as NSObject as ABMultiValueRef
var _email: String = " -- "
let numberOfEmails : CFIndex = ABMultiValueGetCount(emails)
for j in 0 ..< numberOfEmails {
if((ABMultiValueCopyValueAtIndex(emails, j)) != nil) {
let unmanagedEmail = ABMultiValueCopyValueAtIndex(emails, j)
_email = (Unmanaged.fromOpaque(unmanagedEmail.toOpaque()).takeRetainedValue() as NSObject as! String).lowercaseString
arrEmails.append(_email)
}
}
}
let dic = [kMobileNumbers:arrContacts,kEmails:arrEmails]
let jsonData = try! NSJSONSerialization.dataWithJSONObject(dic, options: NSJSONWritingOptions.PrettyPrinted)
let jsonString = NSString(data: jsonData, encoding: NSUTF8StringEncoding)! as String
print(jsonString)
}
Facebook
typealias CheckFacebookPermission = (Bool,Bool) -> ()
func checkfacebookpermission(VC : UIViewController?, pCompletionBlock:CheckFacebookPermission){
if FBSDKAccessToken.currentAccessToken() != nil{
print("Already logged in.")
pCompletionBlock(true,false)
}
else if VC != nil{
print("Login to Facebook first.")
let fbLoginManager: FBSDKLoginManager = FBSDKLoginManager()
fbLoginManager.logOut()
fbLoginManager.logInWithReadPermissions(["public_profile","email"], fromViewController: VC, handler: {(result: FBSDKLoginManagerLoginResult!, error: NSError!) -> Void in
if error != nil{
print("Error :- \(error)")
pCompletionBlock(false,false)
}
else if (result?.isCancelled)!{
print("Cancelled")
pCompletionBlock(false,false)
}
else{
print("Logged in")
if (result?.grantedPermissions.contains("publish_actions"))!
{
print("publish_actions permission granted")
}
dispatch_async(dispatch_get_main_queue(),{
pCompletionBlock(true,true)
})
}
})
}
else{
pCompletionBlock(false,false)
}
}
func getFacebookFriends(pCompletionBlock:FacebookContactSync){
FBSDKGraphRequest(graphPath: kFBFriend, parameters: [kFBFields: kFBRequiredFieldsFriends]).startWithCompletionHandler({(connection: FBSDKGraphRequestConnection!, result: AnyObject!, error: NSError!) -> Void in
if error == nil{
var arrFacebookFriends : [AnyObject] = []
var dic : [String : AnyObject] = result as! [String : AnyObject]
if result != nil{
let data : [AnyObject] = dic[kDataKey] as! Array
for dic in data{
arrFacebookFriends.append(dic)
}
}
let jsonData = try! NSJSONSerialization.dataWithJSONObject(arrFacebookFriends, options: NSJSONWritingOptions.PrettyPrinted)
let jsonString = NSString(data: jsonData, encoding: NSUTF8StringEncoding)! as String
print(jsonString)
}
})
}