web-dev-qa-db-ja.com

iOS 9 LaunchServices:エラー:URLスキームitms-servicesの登録済みハンドラーがありません

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

しかし、iOS 9でテストした後、アプリがリンク「itms-services://」リンクを開くことができず、「LaunchServices:エラー:URLスキームitms-servicesの登録済みハンドラーがありません」などのエラーが発生することがわかりました。

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

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

「itms-services」、「itms-services://」、および完全なURLをplistファイルの「LSApplicationQueriesSchemes」に配置することをテストしました。しかし、それでも機能しません。

10
Daniel

私はあなたと同じ問題に直面しました。そして、アプリが最初にサファリでhtml URLを開く方法で、この問題を解決します。

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

htmlurlは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()">
1
dullgrass

IOS9の場合(私の場合、私のURLスキームは次のとおりです:hash :)

Info.plistを変更します: add the custom url schemes here

次に、イベントハンドラーを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;
}
0
creality

IOS 9では、アプリがInfo.plistのLSApplicationQueriesSchemesキー(文字列の配列)の下でクエリを実行するURLスキームをホワイトリストに登録する必要があります。

enter image description here

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

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

詳細情報: http://useyourloaf.com/blog/querying-url-schemes-with-canopenurl.html

0
NSKevin

それがあなたのケースかどうかはわかりませんが、アプリをダウンロードするにはhttpsのURLが必要です。ウェブサイトにSSLがないため、.plistをドロップボックスにアップロードし、itms-servicesリンクの共有リンクを使用します。 .plistはサーバーにリダイレクトし、問題はありません

0
magorich