之前工作中遇到的一種事實需求匣距,要求在js文件中實現(xiàn)照片功能的實現(xiàn)衅疙,同時在OC中控制贝咙,項目中借助了JSPatch。
代碼中涉及到AVCaptureSession作媚、AVCaptureDevice攘滩、AVCaptureDeviceInput、AVCaptureStillImageOutput等類纸泡。在調用下面這個函數(shù)來獲取拍攝照片的Data數(shù)據(jù)時漂问,JSPatchConvertor轉換過來的js代碼,始終不能成功。
- (void)captureStillImageAsynchronouslyFromConnection:(AVCaptureConnection *)connection completionHandler:(void (^)(CMSampleBufferRef imageDataSampleBuffer, NSError *error))handler;
因為這個函數(shù)回調block中的imageDataSampleBuffer實例為null蚤假。
下面來說遇到這一類情況栏饮,我的解決方法!
在oc代碼自己創(chuàng)建一個組件類磷仰,until.h和until.m文件袍嬉,在這個組件類中實現(xiàn)方法回調。
依然拿上面的例子說話灶平,上面的block回調中我想要獲取照片的Data數(shù)據(jù)伺通,那么我在.h文件中
.m文件
其中我聲明一個myblock的block用來獲取stillImageOutput 中block線程中數(shù)據(jù),這樣做是為了解決block線程問題民逼。
在js文件
首先要借助JSPatch聲明一下自己創(chuàng)建的組件類泵殴, require('until');
因為是類方法直接調用,沒問題能夠拿到需要的照片data數(shù)據(jù)拼苍!
雖然這種方法不是很完美,是一種折中的方法调缨,但是對于借助強大的JSPatch的項目來說疮鲫,部分問題算是解決了!O乙丁俊犯!
個人編輯,分享給大家伤哺,不喜勿噴燕侠,謝謝!立莉!