10

いくつかの社内アプリがあり、iOS 9 より前のバージョンでは、アプリはバージョン比較後に "itms-services://" のようなリンクを開き、新しいバージョンのアプリがダウンロードされてインストールされます。

しかし、iOS 9 でテストしたところ、アプリがリンク「itms-services://」リンクを開くことができず、「LaunchServices: エラー: There is no registered handler for URL scheme itms-services」のようなエラーが発生することがわかりました。

アプリの更新に使用したコード:

let downloadUrl = NSURL(string: url)
UIApplication.sharedApplication().openURL(downloadUrl!)

「itms-services」、「itms-services://」、および完全な URL を plist ファイルの「LSApplicationQueriesSchemes」に入れることをテストしました。しかし、まだ動作しません。

4

4 に答える 4

1

私はあなたと同じ問題に遭遇しました。そして、アプリが最初にSafariでhtml URLを開くという方法でこの問題を解決し、

[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"http:// xx.xx.xx.xx/xx.html"]];

HTML URL は URL --- itms-services://?action=download-manifest&url= https://xx.xx.xx.xx/xx/xx.plistアドレスにリダイレクトされます。この方法でアプリを更新できますが、更新プロセスでは最初に Safari を開いてから App Store を開くことを警告する必要があります。[開く] ボタンを選択すると、アプリをインストールするかどうかが警告され、最後にインストール ボタンを確認します。アプリは自動的にインストールされます。

次のように私のHTMLコンテンツ:

<html>
<head>
<metahttp-equiv="Content-Type" content="text/html;charset=utf-8" />
     <script type="text/javascript">
               function load()
               {
                        window.location ="itms-services://?action=download-manifest&url=https://xxx/xx/xx.plist";
               }
     </script>
</head>
<body onload = "load()">
于 2015-12-03T08:14:46.450 に答える
0

iOS 9 では、アプリケーションが LSApplicationQueriesSchemes キー (文字列の配列) の下にある Info.plist で照会する URL スキームをホワイトリストに登録する必要があります。

ここに画像の説明を入力

Info.plist に含まれるスキームを使用すると、すべてが以前と同じように機能します。iOS 9 にリンクする場合、Info.plist で必要なものを宣言するだけで、50 の異なるスキームに制限されません。含めることができるスキームの数に制限はないようですが、メカニズムを悪用していると思われる場合は、App Store レビュー チームから質問されることを期待しています。

このメカニズムは canOpenURL にのみ適用され、openURL には適用されないことに注意してください。openURL で開くために、Info.plist にスキームをリストする必要はありません。

詳細については、http: //useyourloaf.com/blog/querying-url-schemes-with-canopenurl.htmlを参照してください。

于 2015-11-24T04:36:30.613 に答える
0

iOS9 (私の場合、私の URL スキームは: ハッシュ:)

info.plist を変更します。 ここにカスタム URL スキームを追加します

次に、appdelegate でイベント ハンドラーを登録します。

 func application(app: UIApplication, openURL url: NSURL, options: [String : AnyObject]) -> Bool {
    // do what you want to do
    print(url);

    // return true if url matches scheme
    return true;
}
于 2015-09-19T13:26:03.057 に答える