- Home /
iOS plugin and contact view
Hi,
my goal is to add a contact to iOS devices from unity currently I'm using this as my plugin:
#import "PluginFunctions.h"
#import "ContactsUI/ContactsUI.h"
#import "Contacts/Contacts.h"
@implementation iOSPlugin
- (id)init
{
self = [super init];
return self;
}
extern "C"{
void addContact(const char* cName,const char* cCity,const char* cStreet,const char* cPostalCode,const char* cCountry,const char* cPhoneNumber,const char* cEmail,const char* cOrganization,const char* cTitle)
{
NSString *name = [NSString stringWithUTF8String:cName];
NSString *city = [NSString stringWithUTF8String:cCity];
NSString *street = [NSString stringWithUTF8String:cStreet];
NSString *postalCode = [NSString stringWithUTF8String:cPostalCode];
NSString *country = [NSString stringWithUTF8String:cCountry];
NSString *phoneNumber = [NSString stringWithUTF8String:cPhoneNumber];
NSString *email = [NSString stringWithUTF8String:cEmail];
NSString *organization = [NSString stringWithUTF8String:cOrganization];
NSString *title = [NSString stringWithUTF8String:cTitle];
NSLog(@"%@", name);
NSLog(@"%@", city);
NSLog(@"%@", street);
NSLog(@"%@", postalCode);
NSLog(@"%@", country);
NSLog(@"%@", phoneNumber);
NSLog(@"%@", email);
NSLog(@"%@", organization);
NSLog(@"%@", title);
CNContactStore *store = [[CNContactStore alloc] init];
// create contact
CNMutableContact *mutContact = [[CNMutableContact alloc] init];
mutContact.givenName = name;
CNMutablePostalAddress *address = [[CNMutablePostalAddress alloc] init];
address.city = city;
address.street = street;
address.city = city;
address.postalCode = postalCode;
address.country = country;
CNLabeledValue *labeledValue = [CNLabeledValue labeledValueWithLabel:CNLabelHome value:address];
mutContact.postalAddresses = @[labeledValue];
CNLabeledValue *phone = [CNLabeledValue labeledValueWithLabel:CNLabelHome value:[CNPhoneNumber phoneNumberWithStringValue:phoneNumber]];
mutContact.phoneNumbers = @[phone];
CNLabeledValue *mail = [CNLabeledValue labeledValueWithLabel:CNLabelHome value:[NSString stringWithString:email]];
mutContact.emailAddresses = @[mail];
mutContact.organizationName = organization;
mutContact.jobTitle = title;
CNSaveRequest *saveRequest = [[CNSaveRequest alloc] init];
[saveRequest addContact:mutContact toContainerWithIdentifier:[store defaultContainerIdentifier]];
[store executeSaveRequest:saveRequest error:nil];
}
}
@end
i can add a contact this way but its just in the background and i want to open the contact view and let the user confirm the shown contact or cancel the action from what I've read i have to work with
CNContactViewController *controller = [CNContactViewController viewControllerForUnknownContact:mutContact];
but i don't know how to actually do this (probably cause by my lack of knowledge on iOS topics and therefore not being able to phrase a good google search)
so i can't use "self" as the controllers delegate because we are in an extern C area
i can get the Unity view controller with
`extern UIViewController *UnityGetGLViewController();`
but so far i wasn't able to use it because of different types
Any help appreciated!
Comment