Bien, ¡finalmente logré hacerlo funcionar! Gracias a todos los que intentaron ayudarme, especialmente @Rick James y @Gerard Roche.
SUGERENCIA:
Si necesita trabajar con emoji, antes que nada, haga pruebas simples en localhost. Cree una nueva base de datos y cree una aplicación nueva para fines de prueba.
Si sigue los pasos que escribí en la pregunta o si sigue este tutorial: https://mathiasbynens.be/notes/mysql-utf8mb4#utf8-to-utf8mb4 debe funcionar.
Trabajando localmente en una nueva aplicación básica, tendrá más control y más espacio para realizar todas las pruebas que necesita.
SOLUCIÓN:
En mi caso el problema estaba en la configuración de la base de datos en CodeIgniter. No estaba configurando correctamente char_set y la intercalación para una estúpida omisión:estaba anulando la configuración de la base de datos en la función que guarda mensajes para asegurarme de que funcionaba con la base de datos móvil.
ANTES:
function message_save ( $data = FALSE )
{
$project_db_config = array();
$project_db_config['hostname'] = 'MY_HOST';
$project_db_config['username'] = 'MY_USERNAME';
$project_db_config['password'] = 'MY_PASSWORD';
$project_db_config['database'] = 'MY_DATABASE';
$mobile_db = $this->load->database( $project_db_config, TRUE );
// other code to save message
}
DESPUÉS:
function message_save ( $data = FALSE )
{
$mobile_db_connection = $this->load->database('admin_mobile_mh', TRUE);
// other code to save message
}
CONCLUSIÓN:
La aplicación debe establecer la conexión a la base de datos correctamente. Si tiene la base de datos configurada correctamente pero no establece la conexión adecuada con su aplicación, no funcionará.
Entonces, si encuentra problemas similares, asegúrese de que la API configure correctamente el char_set
como utf8mb4
y db_collat
como utf8mb4_unicode_ci
.