2017-01-12 18 views
0

私はGo/Objective-CでMac OSアプリを書いています。私はXcodeを使用しておらず、手作業でアプリケーションバンドルを組み立てていると言えば十分です。ファイルシステムの階層は次のようになりますSafariディスプレイから起動されたアプリケーション:このページが「(null)」を開くことを許可しますか?

${APPNAME}.app 
    Contents 
    MacOS 
     ${APPNAME} (binary) 
    Resources 
    Base.lproj 
     InfoPlist.strings (text) 
    Info.plist (text) 

バンドルが正常に起動します。アプリケーションは期待どおりに動作します。私は自分のアプリケーションのURLスキームを定義するPlistファイルにCFBundleURLTypes辞書を持っています。

<key>CFBundleURLTypes</key> 
<array> 
    <dict> 
     <key>CFBundleURLName</key> 
     <string>${APPNAME}</string> 
     <key>CFBundleURLSchemes</key> 
     <array> 
      <string>zzz</string> 
     </array> 
    </dict> 
</array> 

(注: "MyAppを"。${APPNAME}のようなものです。これは、Javaスタイルではなく、DNS名の文字列を逆に)

私はZZZを使用してSafariでリンクをクリックしてください://schemeというメッセージが表示されます:

Do you want to allow this page to open "(null)"? 

なぜですか? Info.plistファイルとInfoPlist.stringsファイルの両方にアプリケーション名を定義しました。

はInfoPlist.stringsファイルには、単にこれを含んでいます

CFBundleName = "My Wonderful Application" 

答えて

0

が明らかに起こってキャッシュメカニズムのいくつかの並べ替えがありました。問題のソフトウェアをインストールしたことのないMacシステムに配備した場合、この問題は発生しませんでした。

注:誤って動作した以前のシステムでは、各テストの開始時にソフトウェアが完全にから削除されていました。 Finder、SafariなどのAppleソフトウェアでは、アプリ名を「(null)」として秘密にキャッシュする必要があります。

回答:新しいMacマシンにインストールするか、またはテストしているマシンを完全に復元します(バックアップなし)。

関連する問題