2017-06-15 10 views
0
私は次のコードを使用してい

のスキーマTELエラーとOpenURLの...リンクアピのiPad

openPhoneDialler(mobile) { 
    let url = 'tel:' + mobile; 
    Linking.canOpenURL(url).then(supported => { 
     if (!supported) { 
     throw 'Cant open phone dialler'; 
     } else { 
     return Linking.openURL(url); 
     } 
    }).catch(err => 
     Alert.alert('Error','Error occurred',[{text: 'OK', onPress:() => {}}]) 
    ); 
    } 

私はSIMカード機能なしでiPad上でテストしてい(無線LANのみ)、canOpenURLが解決さとリンク.openURL(url)が呼び出され、携帯電話番号と[キャンセル]と[通話]という2つのオプションのアラートが表示されます。私が 'Call'を押すと、警告が閉じられ、Wi-Fi only iPadなので何も起こりません。

しかし、私は、次のエラー画面とアプリのクラッシュを「キャンセル」

JSON value '{ 
    code = EUNSPECIFIED; 
    domain = RCTErrorDomain; 
    framesToPop = 1; 
    nativeStackIOS =  (
     "0 workforce_mobile     0x00000001000d4d00 RCTJSErrorFromCodeMessageAndNSError + 152", 
     "1 workforce_mobile     0x0000000100053e4c __41-[RCTModuleMethod processMethodSignature]_block_invoke_2.224 + 192", 
     "2 workforce_mobile     0x000000010015e2f0 -[RCTLinkingManager openURL:resolve:reject:] + 352", 
     "3 CoreFoundation      0x000000018164ce80 <redacted> + 144", 
     "4 CoreFoundation      0x00000001815422b4 <redacted> + 292", 
     "5 CoreFoundation      0x0000000181546e7c <redacted> + 60", 
     "6 workforce_mobile     0x0000000100055098 -[RCTModuleMethod invokeWithBridge:module:arguments:] + 1704", 
     "7 workforce_mobile     0x00000001000aea54 -[RCTBatchedBridge callNativeModule:method:params:] + 568", 
     "8 workforce_mobile     0x00000001000addf4 __33-[RCTBatchedBridge handleBuffer:]_block_invoke.477 + 1276", 
     "9 libdispatch.dylib     0x00000001804fe9e0 <redacted> + 24", 
     "10 libdispatch.dylib     0x00000001804fe9a0 <redacted> + 16", 
     "11 libdispatch.dylib     0x000000018050cad4 <redacted> + 928", 
     "12 libdispatch.dylib     0x00000001805022cc <redacted> + 884", 
     "13 libdispatch.dylib     0x000000018050ea50 <redacted> + 540", 
     "14 libdispatch.dylib     0x000000018050e7d0 <redacted> + 124", 
     "15 libsystem_pthread.dylib    0x00000001807071d0 _pthread_wqthread + 1096", 
     "16 libsystem_pthread.dylib    0x0000000180706d7c start_wqthread + 4" 
    ); 
    userInfo = "<null>"; 
}' of type NSDictionary cannot be converted to NSString 

注押すと:同じクラッシュをuはせずに約10秒間のオープンアラートを離れるときにも起こります任意のプレス。でテスト

:アプリ(無線LANのみと物理デバイス)OSバージョン10.3.1

これが反応ネイティブを結ぶAPIで、または上記のコードのバグです。

答えて

0

Linking.openUrlは約束オブジェクトを返します。 キャンセルボタンを押すと、約束が拒否されます。拒否された約束を飲み込むためにキャッチを追加するだけです。

Linking.openUrl().catch(() => null)

ここではそれについてのドキュメントです:

https://facebook.github.io/react-native/docs/linking.html#openurl

+0

が、私は '右キャッチする必要があり、外キャッチにその約束を返しLinking.openURL(URL)を'返す使用しています。 –