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