2017-07-28 4 views
2

私のアプリは、このようなものです:は成功canOpenURLが、OpenURLのは失敗し、TEL用urlschemaとして

ユーザーは1つのテキストフィールドに電話番号を入力します。 Appはそれを保存します。それから、「電話」ボタンがある詳細画面に電話番号が表示されます。私はcanOpenURLメソッドに電話をかけ、成功すれば私の通話ボタンを有効にしておきます。

URLを次のような形式で作成しています:tel:phone number

私のテスターの1人が電話番号= '55'を追加しました。今、私はcanOpenURLを呼び出すとき、それは成功していますが、openURLメソッドを呼び出すと、電話番号のポップアップが表示されません。

これは他の電話番号、つまり= 13のような2桁の電話番号でも問題なく動作していますが、55,56などの特定の電話番号では失敗しています。

注:クライアントの要件に応じて、電話番号にn個の文字数が必要なような検証は必要ありません。だから、このような答えを提供しないでください。私はcanOpenURLが成功し、openURLが失敗する理由が必要でした。

答えて

1

機能canOpenURLは、スキーマが有効かどうか、つまりURLを処理するアプリがインストールされているかどうかだけをチェックします。 リソースが有効であるとは限りません。あなたのケースでは、numberが有効です。私はそれを見るように - - RFC 2806tel URLSchemeの仕様によって引き起こさが無効であるとhttps://developer.apple.com/documentation/uikit/uiapplication/1622952-canopenurl

問題を参照してください。私はEBFNを読むと

telephone-url   = telephone-scheme ":" 
         telephone-subscriber 
telephone-scheme  = "tel" 
telephone-subscriber = global-phone-number/local-phone-number 
global-phone-number = "+" base-phone-number [isdn-subaddress] 
         [post-dial] *(area-specifier/
         service-provider/future-extension) 
base-phone-number  = 1*phonedigit 
local-phone-number = 1*(phonedigit/dtmf-digit/
         pause-character) [isdn-subaddress] 
         [post-dial] area-specifier 
         *(area-specifier/service-provider/
         future-extension) 
... 
area-specifier  = ";" phone-context-tag "=" phone-context-ident 

は、telephone-subscriperは常にどちらか+または1文字で始まる: は、私はいくつかの関連する部分をコピーしました。

はさらに上、2.5.2 Phone numbers and their scopeに、RFCは言う:55は失敗しますが、TEL:13 okです

私の意見では
If a <local-phone-number> is used, an 
<area-specifier> MUST be included as well. 

が、これはTELが理由です。

+0

あなたのご都合に合わせて、25番、29番などは機能しません.1番または0番から始まる番号は機能しません。私は別の番号を試してみましたが、私はこれを見つけました:1.すべての3桁の電話番号が働いています.1と2桁の電話番号の場合、0,1または2作品で始まるもの、他は仕事をしていません –

+0

これは奇妙です。私はRFCを解釈するので、* global * numer( '+'文字で始まる)または* context *を必要とする*ローカル*番号、つまり '; phone-context =' at URIの終わり。たぶんアップルだけが彼らが何をしたのか知っている... –

関連する問題