Mon 21 Jul 22:43:21 CEST 2025
This commit is contained in:
		
							parent
							
								
									6db9f438e6
								
							
						
					
					
						commit
						367dd879b7
					
				| 
						 | 
					@ -0,0 +1,160 @@
 | 
				
			||||||
 | 
					/*
 | 
				
			||||||
 | 
					 Licensed to the Apache Software Foundation (ASF) under one
 | 
				
			||||||
 | 
					 or more contributor license agreements.  See the NOTICE file
 | 
				
			||||||
 | 
					 distributed with this work for additional information
 | 
				
			||||||
 | 
					 regarding copyright ownership.  The ASF licenses this file
 | 
				
			||||||
 | 
					 to you under the Apache License, Version 2.0 (the
 | 
				
			||||||
 | 
					 "License"); you may not use this file except in compliance
 | 
				
			||||||
 | 
					 with the License.  You may obtain a copy of the License at
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 http://www.apache.org/licenses/LICENSE-2.0
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 Unless required by applicable law or agreed to in writing,
 | 
				
			||||||
 | 
					 software distributed under the License is distributed on an
 | 
				
			||||||
 | 
					 "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
 | 
				
			||||||
 | 
					 KIND, either express or implied.  See the License for the
 | 
				
			||||||
 | 
					 specific language governing permissions and limitations
 | 
				
			||||||
 | 
					 under the License.
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#import <Foundation/Foundation.h>
 | 
				
			||||||
 | 
					#import <AddressBook/ABAddressBook.h>
 | 
				
			||||||
 | 
					#import <AddressBookUI/AddressBookUI.h>
 | 
				
			||||||
 | 
					#import <Cordova/CDVPlugin.h>
 | 
				
			||||||
 | 
					#import "CDVContact.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@interface CDVContacts : CDVPlugin <ABNewPersonViewControllerDelegate,
 | 
				
			||||||
 | 
					                         ABPersonViewControllerDelegate,
 | 
				
			||||||
 | 
					                         ABPeoplePickerNavigationControllerDelegate
 | 
				
			||||||
 | 
					                         >
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    ABAddressBookRef addressBook;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/*
 | 
				
			||||||
 | 
					 * newContact - create a new contact via the GUI
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * arguments:
 | 
				
			||||||
 | 
					 *	1: successCallback: this is the javascript function that will be called with the newly created contactId
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					- (void)newContact:(CDVInvokedUrlCommand*)command;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/*
 | 
				
			||||||
 | 
					 * displayContact  - IN PROGRESS
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * arguments:
 | 
				
			||||||
 | 
					 *	1: recordID of the contact to display in the iPhone contact display
 | 
				
			||||||
 | 
					 *	2: successCallback - currently not used
 | 
				
			||||||
 | 
					 *  3: error callback
 | 
				
			||||||
 | 
					 * options:
 | 
				
			||||||
 | 
					 *	allowsEditing: set to true to allow the user to edit the contact - currently not supported
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					- (void)displayContact:(CDVInvokedUrlCommand*)command;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/*
 | 
				
			||||||
 | 
					 * chooseContact
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * arguments:
 | 
				
			||||||
 | 
					 *	1: this is the javascript function that will be called with the contact data as a JSON object (as the first param)
 | 
				
			||||||
 | 
					 * options:
 | 
				
			||||||
 | 
					 *	allowsEditing: set to true to not choose the contact, but to edit it in the iPhone contact editor
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					- (void)chooseContact:(CDVInvokedUrlCommand*)command;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- (void)newPersonViewController:(ABNewPersonViewController*)newPersonViewController didCompleteWithNewPerson:(ABRecordRef)person;
 | 
				
			||||||
 | 
					- (BOOL)personViewController:(ABPersonViewController*)personViewController shouldPerformDefaultActionForPerson:(ABRecordRef)person
 | 
				
			||||||
 | 
					                    property:(ABPropertyID)property identifier:(ABMultiValueIdentifier)identifierForValue;
 | 
				
			||||||
 | 
					/*
 | 
				
			||||||
 | 
					 * Launches the Contact Picker to select a single contact.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * arguments:
 | 
				
			||||||
 | 
					 *	1: this is the javascript function that will be called with the contact data as a JSON object (as the first param)
 | 
				
			||||||
 | 
					 * options:
 | 
				
			||||||
 | 
					 *	desiredFields: ContactFields array to be returned back
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					- (void)pickContact:(CDVInvokedUrlCommand*)command;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/*
 | 
				
			||||||
 | 
					 * search - searches for contacts.  Only person records are currently supported.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * arguments:
 | 
				
			||||||
 | 
					 *  1: successcallback - this is the javascript function that will be called with the array of found contacts
 | 
				
			||||||
 | 
					 *  2:  errorCallback - optional javascript function to be called in the event of an error with an error code.
 | 
				
			||||||
 | 
					 * options:  dictionary containing ContactFields and ContactFindOptions
 | 
				
			||||||
 | 
					 *	fields - ContactFields array
 | 
				
			||||||
 | 
					 *  findOptions - ContactFindOptions object as dictionary
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					- (void)search:(CDVInvokedUrlCommand*)command;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/*
 | 
				
			||||||
 | 
					 * save - saves a new contact or updates and existing contact
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * arguments:
 | 
				
			||||||
 | 
					 *  1: success callback - this is the javascript function that will be called with the JSON representation of the saved contact
 | 
				
			||||||
 | 
					 *		search calls a fixed navigator.service.contacts._findCallback which then calls the success callback stored before making the call into obj-c
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					- (void)save:(CDVInvokedUrlCommand*)command;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/*
 | 
				
			||||||
 | 
					 * remove - removes a contact from the address book
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * arguments:
 | 
				
			||||||
 | 
					 *  1:  1: successcallback - this is the javascript function that will be called with a (now) empty contact object
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * options:  dictionary containing Contact object to remove
 | 
				
			||||||
 | 
					 *	contact - Contact object as dictionary
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					- (void)remove:(CDVInvokedUrlCommand*)command;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// - (void) dealloc;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@interface CDVContactsPicker : ABPeoplePickerNavigationController
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    BOOL allowsEditing;
 | 
				
			||||||
 | 
					    NSString* callbackId;
 | 
				
			||||||
 | 
					    NSDictionary* options;
 | 
				
			||||||
 | 
					    NSDictionary* pickedContactDictionary;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@property BOOL allowsEditing;
 | 
				
			||||||
 | 
					@property (copy) NSString* callbackId;
 | 
				
			||||||
 | 
					@property (nonatomic, strong) NSDictionary* options;
 | 
				
			||||||
 | 
					@property (nonatomic, strong) NSDictionary* pickedContactDictionary;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@interface CDVNewContactsController : ABNewPersonViewController
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    NSString* callbackId;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					@property (copy) NSString* callbackId;
 | 
				
			||||||
 | 
					@end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* ABPersonViewController does not have any UI to dismiss.  Adding navigationItems to it does not work properly,  the navigationItems are lost when the app goes into the background.
 | 
				
			||||||
 | 
					    The solution was to create an empty NavController in front of the ABPersonViewController. This
 | 
				
			||||||
 | 
					    causes the ABPersonViewController to have a back button. By subclassing the ABPersonViewController,
 | 
				
			||||||
 | 
					    we can override viewWillDisappear and take down the entire NavigationController at that time.
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					@interface CDVDisplayContactViewController : ABPersonViewController
 | 
				
			||||||
 | 
					{}
 | 
				
			||||||
 | 
					@property (nonatomic, strong) CDVPlugin* contactsPlugin;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@end
 | 
				
			||||||
 | 
					@interface CDVAddressBookAccessError : NSObject
 | 
				
			||||||
 | 
					{}
 | 
				
			||||||
 | 
					@property (assign) CDVContactError errorCode;
 | 
				
			||||||
 | 
					- (CDVAddressBookAccessError*)initWithCode:(CDVContactError)code;
 | 
				
			||||||
 | 
					@end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					typedef void (^ CDVAddressBookWorkerBlock)(
 | 
				
			||||||
 | 
					    ABAddressBookRef         addressBook,
 | 
				
			||||||
 | 
					    CDVAddressBookAccessError* error
 | 
				
			||||||
 | 
					    );
 | 
				
			||||||
 | 
					@interface CDVAddressBookHelper : NSObject
 | 
				
			||||||
 | 
					{}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- (void)createAddressBook:(CDVAddressBookWorkerBlock)workerBlock;
 | 
				
			||||||
 | 
					@end
 | 
				
			||||||
		Loading…
	
		Reference in New Issue
	
	Block a user