J'ai eu un problème étrange où la deuxième fois que j'exécute mon extension d'application Safari, elle n'apparaîtra pas dans Safari.
SFSafariWebsiteAccess.Level
de "Some" à "All". La même chose se produit si je change d'autres valeurs. Si je laisse le code d'extension et les paramètres inchangés, aucun problème ne se produit. Mais dès que je change une valeur, ça casse complètement même si je modifie ces paramètres.
Cela se produit pour moi sur deux Mac différents, tous les deux 10.13 et 10.14 avec le dernier Xcode.
3 Réponses :
La seule façon dont j'ai pu corriger ce problème est d'aller dans votre répertoire de construction et de supprimer les fichiers de construction.
Vous devrez d'abord arrêter votre projet, puis supprimer ce répertoire: ~ / Library / Xcode / DerivedData / [VOTRE_PROJECT_NAME] / Build / Projects / Debug
YOUR_PROJECT_NAME
sera le nom de votre projet plus un tas de caractères aléatoires, vous devrez donc rechercher vous-même le vrai nom de ce dossier.
J'ai rencontré ce problème exact avec Xcode sur Mojave. Ce que je dois faire, c'est aller dans Product> Clean Build Folder. C'est probablement la même chose que vous faites, mais un peu plus facile.
C'est, pour moi, la bonne réponse. Je suppose qu'une fois que l'extension est exécutée, elle est conservée en mémoire, donc la recompilation ne fait rien. Vous devez le supprimer pour que Safari comprenne que quelque chose a changé, puis recharge la nouvelle version.
Vous pouvez modifier le schéma de _____ extension.appex
, et définir son exécutable sur Safari.app
. Cela ouvrira une nouvelle instance de Safari à chaque fois que vous construisez / exécutez l'extension (pas le wrapper). Cela permettra également à la console Xcode d'afficher la sortie de l'extension. Soyez prudent cependant; si Safari plante, vous risquez de perdre tous les onglets que vous aviez ouverts. Vous n'avez pas besoin de nettoyer le dossier de construction (ou de supprimer manuellement les fichiers dans le Finder) de cette façon.
Normalement, les paramètres du projet n'auraient pas à être modifiés lorsqu'une extension a été publiée / livrée aux utilisateurs (autorisations, nom d'extension, ...) sinon elle pourrait être gravement abusée par les développeurs d'extensions. C'est donc le comportement que les développeurs de Safari ont choisi pour protéger les utilisateurs. Si un développeur crée une application avec des autorisations très peu nombreuses et inoffensives, puis change les autorisations en autorisations nuisibles lorsque suffisamment d'utilisateurs ont installé son application, ce serait mal ... c'est pourquoi Safari (pas Xcode) restreint ceci en désactivant l'extension automatiquement.