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) } }) }