problema html_entity_decode en PHP?

Estoy tratando de convertir entidades HTML de una cadena de origen a su equivalente de caracteres literales.

Por ejemplo:

<?php

$string = "Hello &#8211; World";
$converted = html_entity_decode($string);

?>

Si bien esto convierte correctamente la entidad en la pantalla, cuando miro el código HTML todavía muestra la entidad explícita. Necesito cambiar eso para que literalmente convierta la entidad ya que no estoy usando la cadena dentro de una página HTML.

¿Alguna idea sobre lo que estoy haciendo mal?

FYI, estoy enviando la cadena convertida al servicio de notificaciones Push de Apple:

$payload['aps'] = array('alert' => $converted, 'badge' => 1, 'sound' => 'default');
$payload = json_encode($payload);

Respuestas a la pregunta(2)

Su respuesta a la pregunta