2012-04-06 18 views
11

Tengo dos iconos de aplicaciones integrados (gratuitos y premium). ¿Es posible reemplazar el icono gratis por premium icon programmatically después de que la compra en la aplicación se complete con éxito?¿Puedo cambiar el icono de la aplicación programáticamente?

+2

Desde iOS '10.3' esto es posible! Eche un vistazo a esta respuesta: http://stackoverflow.com/questions/41950994/is-this-possible-to-apply-the-alternative-icon-to-the-ios-application – KlimczakM

Respuesta

13

No, el icono se especifica en el paquete de la aplicación, que no debe cambiar. Si lo modifica, la firma de su aplicación no será válida (no tendrá la misma suma de comprobación) y, por lo tanto, su aplicación ya no se ejecutará.

+0

¿Esto también se aplicaría a un problema interno? aplicación en lugar de uno distribuido a través de la App Store pública? ¿Es el plist inmutable? –

0

Me temo que no; Es bastante seguro que el ícono de la aplicación no puede cambiar condicionalmente.

0

No creo que eso sea posible sin un teléfono con jailbreak. El ícono de la aplicación está contenido en el paquete de la aplicación, en el que no tiene permiso para escribir.

-1

No estoy de acuerdo con todas las respuestas anteriores. Pruebe la aplicación "OneTap", le permitirá hacer su propio ícono de su nueva aplicación. La aplicación OneTap es gratuita en Itune.

+3

Estoy seguro de que mucha gente está interesada si esto es posible. Deje un enlace de URL o un código fuente de la solución que funcione. – Vincent

+1

¡No es posible! OneTap no cambia su propio AppIcon. Simplemente abre Safari con la imagen seleccionada y el usuario debe presionar guardar en la pantalla de inicio. Después de esto, puede tocar en este nuevo ícono de aplicación que abrirá safari que lo redireccionará a la aplicación OneTap Cambie programáticamente el icono de la aplicación no es posible – AlexPrinceton

3

No, definitivamente no. Esa parte del paquete de la aplicación es de solo lectura y también tiene código firmado.

La respuesta con respecto a la aplicación TapOne es algo completamente diferente. Crea "clips web" para sitios web o números de teléfono. Por ejemplo, para crear un icono iPhone para su sitio web, debe agregar algo como esto a su encabezado de la página web:

<link rel="apple-touch-icon" href="/your-custom-icon.png"/> 

Hay más información disponible aquí: https://developer.apple.com/library/ios/documentation/AppleApplications/Reference/SafariWebContent/ConfiguringWebApplications/ConfiguringWebApplications.html

TapOne web y de los clips no lo hacen mediante programación cambie el ícono dentro de un paquete de aplicaciones.

9

Hay una nueva solución para esta situación.

Puede utilizar

setAlternateIconName(_:completionHandler:) 

IOS 10.3 es con Xcode 8.3.

10.3+

Actualización:

El uso es bastante simple, la clave es averiguar el uso plist y tenga en cuenta que no se puede cargar activos de xcassets (al menos no funcionaba para mí). Necesita agregar sus archivos de iconos para proyectar y prefiere imágenes de 180x180 para calidad.

Necesita utilizar "Archivos de iconos (iOS 5)", los nuevos archivos de iconos no funcionan.

Una última cosa, cuando cambie el icono de un botón, haga clic en una ventana de Alerta que dice 'Ha cambiado el icono de' IcoTest '.'

enter image description here

//ViewController.swift 
@IBAction func ico1Click(_ sender: Any) { 
    if UIApplication.shared.supportsAlternateIcons{ 
     UIApplication.shared.setAlternateIconName("Icon2", completionHandler: { (error) in 
      print(error ?? "") 
     }) 
    }else{ 
     print("NO NO") 
    } 
} 

//Info.plist 
<key>CFBundleIcons</key> 
<dict> 
    <key>CFBundleAlternateIcons</key> 
    <dict> 
     <key>Icon1</key> 
     <dict> 
      <key>CFBundleIconFiles</key> 
      <array> 
       <string>alternater1_180x180</string> 
      </array> 
      <key>UIPrerenderedIcon</key> 
      <false/> 
     </dict> 
     <key>Icon2</key> 
     <dict> 
      <key>CFBundleIconFiles</key> 
      <array> 
       <string>alternater2_180x180</string> 
      </array> 
     </dict> 
    </dict> 
</dict> 
+0

Intente expandir su respuesta. No has explicado que es un método en UIApplication o cómo configurar el plist o algo así. Solo decir "llamar a este método" no es útil para nadie. – dlbuckley

+0

Me gustaría compartir esta noticia emocionante con la gente. Compartiré un cómo hacerlo tan bien como lo he hecho. Tan triste que esto no es suficiente para ti. – ymutlu

+0

Es una noticia emocionante, estás en lo cierto. Pero tu respuesta no cuenta toda la historia sobre cómo usar esta nueva característica, sus implicaciones y detalles de implementación. Abajo voté la respuesta porque tal como está es una respuesta simplemente tratando de obtener votos y no ayudar a nadie. Si modifica su respuesta para explicar completamente la característica, entonces felizmente la votaré :) – dlbuckley

1

Una actualización: desde IOS 10.3 puede actualizar el icono de la aplicación por tener iconos alternos definida en el info.plist.

Ver más en Apple Docs

Cuestiones relacionadas