Doit CFBundleURLName match CFBundleIdentifier?
Si je veux iOS Application App1 pour lancer App2 sur un périphérique, puis le CFBundleURLName besoin pour correspondre à la CFBundleIdentifier dans le CFBundleURLTypes dans l'Info.plist?
Par exemple, si j'ai dans App1
<key>CFBundleIdentifier</key>
<string>com.foo.App1</string>
...
<key>CFBundleURLTypes</key>
<array>
<key>CFBundleURLTypes</key>
<array>
<dict>
<key>CFBundleURLSchemes</key>
<array>
<string>fooscheme</string>
</array>
<key>CFBundleURLName</key>
<string>com.foo.App1</string>
</dict>
</array>
Dans le cas ci-dessus, App2 pouvez lancer "fooscheme:" url dans App1. Cependant, si je change App1 de l'Info.plist pour inclure
<key>CFBundleURLTypes</key>
<array>
<dict>
<key>CFBundleURLSchemes</key>
<array>
<string>fooscheme</string>
</array>
<key>CFBundleURLName</key>
<string>com.foo.xyz</string>
</dict>
</array>
c'est à dire, un CFBundleURLName != CFBundleIdentifier, puis App2 ne peut plus se lancer "fooscheme:" url dans App1.
Des idées pourquoi?
Je ne vois pas toute la documentation d'Apple qui CFBundleIdentifier doit correspondre à CFBundleURLName, mais cela semble être le cas dans la pratique. Ou ai-je raté quelque chose?
Merci!
OriginalL'auteur Joel | 2012-10-23
Vous devez vous connecter pour publier un commentaire.
Non, ces deux propriétés n'ont pas besoin de correspondre, je n'ai pas de problèmes avec ce que vous avez fait, j'ai eu mon identificateur d'application -
CFBundleIdentifier
- set de com.djp.myapp et l'url de dispositifs mis en place avecCFBundleURLName
ensemble de rien.comme.l'.identificateur de et unCFBundleURLSchemes
définir comme abcd.Je pouvais ouvrir cette application en appelant le:
abcd://
La seule chose que je pouvais penser, peut-être ce qui pose un problème pour vous est que si vous avez exécuté votre application avec l'url de dispositifs mis en place, et pendant les tests, vous avez changé votre identifiant de lot (
CFBundleIdentifier
), donc en fait à l'origine de 2 applications à exister dans le système.Dans ce cas, vous avez un schéma d'url conflit et Apple état qu'il n'existe pas de processus pour déterminer l'application qui aura la priorité.
Aussi loin que je l'ai testé et expérimenté, si vous avez 2 contradictoires apps, il semble être le premier installés qui est utilisé, et lorsque cette application est supprimé de la seconde application qui est maintenant la seule application de soutien spécifiques schéma d'url n'est pas encore utilisé.
Ceci suggère schémas d'url sont enregistrés avec le système au moment de l'installation, et une nouvelle installation de cette application est nécessaire pour le faire fonctionner sur ces régimes comme prévu.
Pour plus d'informations sur les Schémas d'URL découvrez la Apple Avances App Astuces document.
OriginalL'auteur Daniel
Je pense que la raison en est que vous n'avez pas le CFBundleTypeRole clés qui indiquent que votre application est une visionneuse,éditeur,shell ou autres.
Et cette clé est nécessaire dans la coutume schéma d'URL.
Remarque:osx va pas lancer votre application quand vous le mettez sur Aucun.
Vous pourriez obtenir des informations à partir d'ici Des Développeurs D'Apple Document
OriginalL'auteur YuDenzel