Apple, avec iOS 9, a proposé une API pour bloquer du contenu, et – logiquement – c’est le blocage de la publicité qui a le plus de succès. Je n’ai pas la prétention d’avoir un avis éclairé sur le sujet, j’ai vécu un moment de la pub sur un site Internet (ce n’est plus le cas) et comme beaucoup de monde, la publicité m’irrite parfois. Ce qui m’intéresse ici, c’est une limitation d’Apple.
Selon Apple, le bloqueur de contenu nécessite un CPU 64 bits et les applications de blocage ne peuvent être distribuées que pour les puces 64 bits. Adieu veaux, vaches, cochons iPad 4, iPhone 5, etc. En réalité, c’est partiellement faux, la limitation est artificielle. J’ai testé avec un bloqueur open source (BlockParty) et ça fonctionne sur un iPhone 5. Pas sur un iPad 3, par contre, donc il y a bien une seconde limitation (je suppose qu’il existe la même sur iPhone 4S).
Bonne nouvelle, depuis Xcode 7, plus besoin d’un compte développeur pour compiler manuellement.
Première chose, installer Xcode 7. Ensuite, Préférences -> Compte. Il suffit d’ajouter votre Apple ID.
Ensuite, vous copier le projet sur votre disque dur avec la commande suivante et vous l’ouvrez.
git clone https://github.com/krishkumar/BlockParty
Une fois le projet ouvert, regardez sous Target. Deux programmes sont présents, il faut aller sélectionner (dans General) votre identifiant dans Team et mettre un bundle identifier unique, par exemple com.xxx.apps.BlockParty
. Ensuite, cliquez sur Fix Issue. Il faut effectuer la même manipulation pour les deux cibles, avec ça dans la seconde : com.xxx.apps.BlockParty.RediffBlock
(xxx
doit être identique dans les deux).
EDIT : vu qu’on m’a posé la question, il est possible de mettre une liste plus efficace. Téléchargez ça, copiez la liste qui est là et générez un fichier JSON. Il faut ensuite le copier dans le dossier RediffBlock sous le nom blockerList.json
.
Enfin, sélectionnez votre appareil dans la barre du haut et cliquez simplement sur le bouton Play. Normalement, le programme devrait se compiler et s’installer sur l’appareil.
Du côté de l’iPhone, il faut se rendre dans Réglages -> Général -> Profil et se fier à votre identifiant.
Enfin, il faut activer le bloqueur, dans les réglages de Safari.
Au passage, le même bloqueur de pubs fonctionne dans Safari 9 sous El Capitan (et sûrement Yosemite), les instructions sont sur GitHub.
Quand je met le même bundle identifier pour les deux targets (com.toto.tati.), il me compile bien le projet mais ne peut pas l’installer car les deux identifiants sont les même. Donc je change un des deux par com.toto.tata. et là il me dit « error: Embedded binary’s bundle identifier is not prefixed with the parent app’s bundle identifier. ». Que doit-je faire?
Je précise je suis sur un iPhone 5s 64, non jailbreaker, avec un profil VPN et sans compte dev payant.
Il faut essayer avec com.xxx.yyy pour le premier et com.xxx.yyy.zzz pour le second
Toujours pas, il m’indique « This app contains an app extension with an illegal bundle identifier. App extension bundle identifiers must have a prefix consisting of their containing application’s bundle identifier followed by a ‘.’ » avec com.toto.tata. pour BlockParty et com.toto.tata.file. pour RediffBlock. Je précise que le lien pour l’installation sur iOS 9 GM sur Github est hors service.
A le lien refonctionne. bonne nouvelle :).
Bon problème réglé j’ai essayé plusieurs noms jusqu’à que ça marche :)
J’avais le même problème, résolu avec
com.trucbidule.apps.BlockParty pour blockparty
com.trucbidule.apps.BlockParty.RediffBlock et rediffblock
et du coup ça fonctionne sur mon iPhone 5c, merci du guide !
Par contre j’essaie de rendre la liste de filtres un peu plus exhaustive.
Si j’ai bien compris tous les bloqueurs sur iOS ont un ficher blockerList.json,
il suffirait d’en piquer et d’en fusionner quelque uns non ?
Oui. On peut récupérer celui d’Adblock en utilisant ça : https://github.com/ArmandGrillet/Adios-Engine-Demo
J’ai ajouté un truc pour améliorer la liste (attention, c’est gros)