Libimobiledevice: ideviceinfo com.apple.mobile.battery a través de WiFi - ¿a veces funciona?

Creado en 8 may. 2020  ·  28Comentarios  ·  Fuente: libimobiledevice/libimobiledevice

Parece que ideviceinfo -u DID -q com.apple.mobile.battery a través de WiFi (con iTunes WiFi Sync activado sin conexión USB , a veces funciona).

¿Esto se considera normal?

Comentario más útil

Quizás los administradores están descartando ciertos tipos de paquetes. La sincronización WiFi utiliza mDNS para la detección de dispositivos.

Todos 28 comentarios

La conexión wifi no es permanente. Solo funciona cuando el dispositivo se activa de vez en cuando.

Tienes razón Nikias, pero la espera es como máximo un par de minutos en mi caso, así que no está nada mal. ¡Gracias por todo lo que haces!

¿Crees que alguna vez será posible leer el nivel de batería de Apple Watch a través de ideviceinfo? Tal vez el nivel de la batería pueda ir de Watch → iPhone → Custom Bonjour (?) Sync Service → ideviceinfo / mac. ¿Sería esto posible?

@JCsplash para Apple

@nikias ¿Te importaría elaborar un poco? ¿Este enfoque requeriría una aplicación de reloj de Apple y / o una aplicación de iPhone?

En este momento planeo hacerlo por la fuerza bruta :(

  1. Obtenga el nivel de batería en la aplicación Apple Watch personalizada (a través de tareas en segundo plano)
  2. Enviar carga a la aplicación complementaria de iPhone (a través de la conectividad del reloj)
  3. Enviar carga a Firebase desde iPhone
  4. Mac lee de firebase.

Si de alguna manera pudiéramos lograr Apple Watch → Mac directamente, sería enorme. Pero no estoy seguro de en qué estás pensando exactamente.

Publicaré una adición a la biblioteca en los próximos días y luego la implementaré según sus necesidades. No se necesita una aplicación. Quédate quieto.

¡Gracias @nikias! Acabo de terminar la aplicación anterior que funciona, pero es excesiva y lenta (la conectividad del reloj solo me brinda como máximo 2 actualizaciones por hora).

No puedo esperar a probar tu solución. Ya estoy usando ideviceinfo para cargar el ipad / iphone, por lo que sería perfecto. Si quisieras compartir tu proceso de pensamiento en el camino, ¡también te lo agradecería!

También @nikias encontré el siguiente código que prueba este enfoque com.apple.companion_proxy.

https://gist.github.com/matteyeux/04df80e5368d99a001b7

¿Quizás esto podría ayudar?

@JCsplash verifique mi última confirmación 0268777212847afd7734cb280115aea70dc81c92 y esto:
https://gist.github.com/nikias/ebc6e975dc908f3741af0f789c5b1088

@nikias gracias por hacer esto, ¡se ve genial! Sin embargo, no estoy exactamente seguro de cómo puedo usarlo. ¿Le importaría compartir algunas instrucciones más? ¿Hay algún comando al que pueda llamar como ideviceinfo?

@JCsplash compila y ejecuta mi programa de prueba comptest que planteé en mi comentario anterior.

Screen Shot 2020-05-19 at 12 00 47 AM

@nikias Recibo "error: no hay función coincidente para llamar a 'idevice_new_with_options'". Estoy bastante seguro de que tengo el código más reciente. ¿Alguna idea sobre qué hacer aquí?

Debe tener una versión anterior instalada en algún lugar.

EDITAR: Terminé haciendo lo siguiente que pudo compilar comptest.

gcc comptest.c -L<PATH TO DIRECTORY WITH LIBIMOBILEDEVICE.A> -limobiledevice  -L<PATH TO DIRECTORY WITH LIBPLIST.A> -lplist

Me estoy encontrando con este error ahora. ¿Puede compilar / vincular con éxito simplemente haciendo "gcc comptest.c"?

Verifiqué que tengo companion_proxy.h instalado en la última versión. Pero de alguna manera comptest no reconoce sus métodos.

Screen Shot 2020-05-19 at 10 59 48 AM

¡Esto funciona increíble! ¡Muchas gracias @nikias ! ¿Hay alguna forma de hacer que se ejecute un poco más rápido como idevice_id o ideviceinfo? En este momento, toma alrededor de 3-4 segundos.

Esto es lo que hice para que funcione (si alguien más necesita ayuda)

Compilación de código

gcc <INSERT_PATH_TO_COMPTEST> -L<INSERT_PATH_TO DIRECTORY_WITH_LIBIMOBILEDEVICE.A> -limobiledevice  -L<INSERT_PATH_TO_DIRECTORY_WITH_LIBPLIST.A> -lplist -o <INSERT_YOUR_FILE_NAME>

Mueva el ejecutable a / usr / local / bin para que pueda usarse globalmente (Opcional)

Código de ejecución

<INSERT_YOUR_FILE_NAME> <INSERT_IPHONE_UDID>

No funciona más rápido, así es como Apple lo implementó desafortunadamente. Como cada vez que consulta una clave, cierra la conexión desde el lado del dispositivo ...

No te preocupes, esto es genial. ¿Sabes si Apple Pencil también usa companion_proxy para conectarse al iPad o si eso es solo para relojes?

Solo mira. Appel Pencil utiliza Bluetooth LE.

@nikias Suena bien. ¿Qué opinas acerca de agregar un tiempo de espera para comptest? ¿Crees que es necesario?

Haz lo que quieras con él, es solo una prueba de concepto.

Suena bien. ¡Muchas gracias @nikias !

Hola @nikias, ¿hay un valor de "BatteryIsCharging" o "ExternalChargeCapable" para el Apple Watch? Intenté usar get_value_from_watch pero acabo de volver "Ocurrió un error inesperado".

Me pregunto si esos campos existen.

BatteryIsCharging definitivamente existe. Vea mi ejemplo actualizado en la esencia.

También actualice libplist nuevamente, tuve una falta de coincidencia de nombre entre el archivo de encabezado y la función de interfaz pública.

@nikias ¿Impulsó los cambios de libplist? ¿Todavía veo "bbde6a4" como la última confirmación de libplist realizada hace 6 días?

mi mal, ahora lo hice

¡Libplist recién actualizado, compilado y BatteryIsCharging funciona muy bien! ¡Gracias @nikias !

Hola @nikias , pregunta rápida. ¿Sabe si las redes WiFi pueden tener la sincronización WiFi desactivada por sus administradores? Me di cuenta de que la sincronización WiFi funciona en mi red personal WPA2 pero no en la red empresarial WPA2 de mi escuela. ¿Es esto típico?

Quizás los administradores están descartando ciertos tipos de paquetes. La sincronización WiFi utiliza mDNS para la detección de dispositivos.

¿Fue útil esta página
0 / 5 - 0 calificaciones