uni-app 急需IOS能够拉起原生通讯录界面选择联系人并返回电话号码及姓名的原生插件

发布于 1周前 作者 zlyuanteng 来自 Uni-App

uni-app 急需IOS能够拉起原生通讯录界面选择联系人并返回电话号码及姓名的原生插件

急需IOS能够拉起原生通讯录界面选择联系人并返回电话号码及姓名的原生插件

愿意付费!!!!!!

有意向者,请联系QQ1018863298

5 回复

通讯录选择联系人、可单选、多选、详情(ios):https://ext.dcloud.net.cn/plugin?id=9107

针对您提到的需求,即使用uni-app在iOS平台上拉起原生通讯录界面选择联系人并返回电话号码及姓名,您可以通过开发一个原生插件来实现这一功能。以下是一个简化的示例,展示如何在iOS原生代码中实现这一功能,并将其封装为uni-app插件。

1. 创建iOS原生插件

首先,您需要创建一个iOS原生插件。在Xcode中创建一个新的Cocoa Touch Framework项目,命名为UniContactPicker

UniContactPicker.h

#import <Foundation/Foundation.h>
#import <UIKit/UIKit.h>

NS_ASSUME_NONNULL_BEGIN

@protocol UniContactPickerDelegate <NSObject>
- (void)contactPicker:(id)sender didSelectContact:(CNContact *)contact;
@end

@interface UniContactPicker : NSObject

@property (nonatomic, weak) id<UniContactPickerDelegate> delegate;

- (void)presentContactPickerFromViewController:(UIViewController *)viewController;

@end

NS_ASSUME_NONNULL_END

UniContactPicker.m

#import "UniContactPicker.h"
#import <Contacts/Contacts.h>
#import <ContactsUI/ContactsUI.h>

@implementation UniContactPicker

- (void)presentContactPickerFromViewController:(UIViewController *)viewController {
    if (![CNContactStore class]) {
        return;
    }
    
    CNContactStore *store = [[CNContactStore alloc] init];
    [store requestAccessForEntityType:CNEntityTypeContacts completionHandler:^(BOOL granted, NSError * _Nullable error) {
        if (granted) {
            CNContactPickerViewController *contactPicker = [[CNContactPickerViewController alloc] init];
            contactPicker.delegate = self;
            [viewController presentViewController:contactPicker animated:YES completion:nil];
        } else {
            // Handle access denied
        }
    }];
}

- (void)contactPicker:(CNContactPickerViewController *)picker didSelectContact:(CNContact *)contact {
    if (self.delegate && [self.delegate respondsToSelector:@selector(contactPicker:didSelectContact:)]) {
        [self.delegate contactPicker:self didSelectContact:contact];
    }
}

@end

2. 集成到uni-app

接下来,您需要将这个插件集成到uni-app项目中。您可以通过uni-app的插件机制来实现这一点。

manifest.json中声明插件

"plugins": {
    "UniContactPicker": {
        "version": "1.0.0",
        "provider": "your-provider-name",
        "platform": "ios"
    }
}

调用插件

在uni-app的JavaScript代码中,您可以通过plus.bridgeuni.requireNativePlugin(具体取决于uni-app的版本)来调用这个插件。

const contactPicker = uni.requireNativePlugin('UniContactPicker');

contactPicker.presentContactPickerFromViewController({
    success: (res) => {
        console.log('Selected contact:', res);
    },
    fail: (err) => {
        console.error('Failed to select contact:', err);
    }
});

注意,上述代码是一个简化示例,实际开发中可能需要处理更多的细节,如权限请求、错误处理以及插件与uni-app之间的通信。此外,您还需要在iOS原生代码中实现相应的桥接逻辑,以便将选中的联系人信息返回给uni-app。

回到顶部