利用一登給你的react-native項目增加刷臉登錄功能之iOS篇

團隊里接到一個雙端app的外包項目,需要刷臉登錄功能。

雙端嘛,就想到用react-native寫會省很多人力。

但是SDK都是原生的,所以本文要講的是在原生處完成刷臉登錄后就跳轉到react的頁面。從而讓你的react項目有刷臉登錄功能。

1.創建react-native項目

1.創建完成后的目錄是這樣的:


react-native項目目錄

2.打開MyApp.xcodeproj,進到AppDelegate.m


AppDelegate.m

這里其實是設置程序啟動后就直接來到react的窗口,我們把它抽出來,然后改為iOS原生那樣子的加載方式。

新建一個Login.storyboard的故事板,然后添加一個控制器,在控制器添加一個按鈕監聽登錄事件。


創建Login.storyboard,且添加按鈕

然后記住把Main interface設置為Login,即程序啟動時進入剛剛我們創建的登錄頁面,而不是react頁面。


設置Main interface設置為Login

3.把appdelegate.m文件里加載react-native的代碼抽到登錄頁面的控制器,記住也要把頭文件搬過去。

把這部分代碼剪切


react的加載

放到LoginViewController里,寫成一個gotoReactNative的方法


gotoReactNative方法

其中launchOptions會報錯,改為nil就行。還有用UIApplication.sharedApplication.delegate獲取窗口把根控制器換掉就OK啦!


LoginViewController的頭文件

然后在登錄按鈕里直接調用這個方法,就完成里從原生登錄完,跳轉到react-native里的操作。


登錄按鈕的監聽

到這里已經完成了在原生登錄完跳到react-native里這樣一個需求。要加入人臉識別,需要借助第三方,請往下看。

2.注冊一登開發者賬號

1.注冊地址:http://www.superid.me/developer/index.html

2.創建一個應用,iOS里的Bundle Identifier填寫剛剛react-native項目iOS里的Bundle Identifier。


創建應用

3.下載SDK和將SDK導入react-native的iOS項目里。下載地址:https://github.com/SuperID/superid-ios-sdk


導入SDK

直接把SDK拖到項目里就行。參考文檔:http://www.superid.me/developer/document-ios/ios_quickstart.html

4.項目中添加-ObjC、-lstdc++編譯選項。


配置SDK

5.iOS10 適配,增加相機、相冊權限說明.在項目 Info.plist 源碼文件中拷貝入下內容:

<key>NSCameraUsageDescription</key>

<string>需要使用您的相機進行刷臉認證</string>

<key>NSPhotoLibraryUsageDescription</key>

<string>一登需要訪問您的相冊</string>

6.初始化 SDK

首先:在AppDelegate.m文件中,導入 SuperID SDK頭文件。

#import"SIDHeader.h"

接著,在 app delegate 方法中添加如下初始化代碼:

- (BOOL)application:(UIApplication *)applicationdidFinishLaunchingWithOptions:(NSDictionary *)launchOptions {??

? [SuperIDregisterAppWithAppID:@"AppID"withAppSecret:@"AppSecret"];//開啟一登SDK的調試模式,開發者在Release時,將該模式設置為NO.

[SuperIDsetDebugMode:YES];//設置一登 SDK 的語言模式,默認為自動模式。

[SuperIDsetLanguageMode:SIDAutoMode];

returnYES;

}

將appid和appsecret換成你一登應用的appid和appsecret。

7.在LoginViewCtroller里添加一個faceLogin的方法,加入以下代碼:

faceLogin方法

代碼如下:

-(void)faceLogin{

[SIDCoreLoginKitshowLoginViewControllerWithAppUserInfoModel:nilresponseBlock:^(NSDictionary*result,NSError*error) {

if(!error) {

//授權登錄成功

NSLog(@"userInfo:%@", result);

NSLog(@"登錄成功!");

[selfgotoReactNative];

}else{

//授權登錄失敗

NSLog(@"Login Fail Error =%ld,%@",(long)[errorcode],[errorlocalizedDescription]);

NSLog(@"登錄失敗!");

}

}];

}

8.在剛剛的登錄按鈕里點擊監聽faceLogin這個方法。


登錄按鈕里點擊監聽faceLogin這個方法

到這里,刷臉登錄完成跳轉到react-native里就大功告成啦!!!

你可以那真機開開心心測試一下!

注意:一定要拿真機測試!!!一定要拿真機測試!!!一定要拿真機測試!!!

因為這里用到了攝像頭!!!

3.效果圖:


效果圖
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容