2016-09-14 2 views
0

반응 네이티브 ios 앱에서 신속한 네이티브 모듈을 사용하여 assets URL에서 애니메이션 GIF를 생성합니다. 이 첫 번째 시도에서 잘 작동하고 있지만 구성 요소를 탈출하고 새로운 자산을 통과 할 때 때때로이 오류 표시, 한 번 응용 프로그램 충돌을 사용 후 :네이티브/스위프트 네이티브 모듈이 한 번만 반응합니다.

반응을 오류 ​​:

react error

또는 때때로

objective-c error

다음

내가 내 REAC 내 네이티브 모듈을 호출하는 방법입니다 : 엑스 코드는 반환 할 _instance이 값이없는 것을 말해,이 목표 - C 함수에 나를 리디렉션 t 구성 요소 : 나는 GifGenerator.m 내 빠른 모듈을 내보내는 방법

callImages: function(){ 
var that = this 
const imagesUri = this.parseImages(); 
var promise = new Promise(function(resolve, reject) { 
    NativeModules.GifGenerator.initFunction(imagesUri, resolve) 
}); 

promise.then(function(o) { 
    base64 = "data:image/gif;base64,"+o.url 
    imagesUri.push(base64); 
    that.setState({images: imagesUri}); 
}); 
} 

:

@interface RCT_EXTERN_MODULE(GifGenerator, NSObject) 

RCT_EXTERN_METHOD(initFunction:(NSArray *)images 
        callback:(RCTResponseSenderBlock)callback); 

@end 

그리고 내 신속 클래스의 importante 부분 :

func initFunction(images : [String], callback: (NSObject) ->()){ 

self.standardImages = images 

return getImages(images, handler: self.generationCallback , someCallback: callback) 
} 

... 
(getImages call generate passing the callback function to it) 
... 

func generate(mainHandler: (NSObject) ->()) -> Void { 

... 
(movie to gif generation using AVAssetWriter) 
... 

videoWriter.finishWritingWithCompletionHandler {() -> Void in 
     if error == nil { 

      let resultUrl = self.videoToGif(videoOutputURL) 
      let ImageData = NSData(contentsOfURL: resultUrl) 
      let imageBase64:String =   ImageData!.base64EncodedStringWithOptions(.Encoding64CharacterLineLength) 
      mainHandler([["url": imageBase64], ["error": "non"]]) 

      if let data = NSData(contentsOfURL: resultUrl) { 
       let image = UIImage(data: data) 
       UIImageWriteToSavedPhotosAlbum(image!, nil, nil, nil); 
      } 

     } 

그들은의 중요한 부분입니다 내 코드는 필요한 경우 더 많이 보여줄 수 있습니다.

답변

0

내 생각에 매번 콜백을 재설정해야합니다. 신속한 측면에서 사용되는 ... 그래서 귀하의 js는 콜백 메서드의 경찰에서 신속하게 귀하의 js CB를 등록 ..