Mantener los contenidos comprados mientras se actualiza

tengo una aplicación de música para cierto artista, contiene diferentes álbumes donde el usuario puede comprar cada álbum solo, cuando se compra cierto álbum, su botón cambia de comprar a reproducir, y las canciones de este álbum aparecerán en la aplicación, pero cuando Hice una versión actualizada, descubrí que cuando el usuario actualiza su aplicación, se restablecerá como estaba de forma predeterminada, los botones de reproducción se reemplazarán por botones de compra y el usuario tiene que volver a descargar los álbumes que ya compró en el primero. versión, ¿cómo puedo mantener todos los contenidos disponibles en todas las versiones,

así es como el botón cambia su imagen de "comprar" a "jugar" en la vista de tabla3

 NSArray *myPathList = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES);
NSString *myPath = [myPathList objectAtIndex:0];
NSString* storagePath = [myPath stringByAppendingPathComponent:@"purchasedAlbums.plist"];
NSArray* valueList = [[NSArray alloc] initWithContentsOfFile:storagePath];

UIImage *change1 = [UIImage imageNamed:@"playalbum-06.png"];
UIImage *change2 = [UIImage imageNamed:@"playalbum-07.png"];
UIImage *change3 = [UIImage imageNamed:@"playalbum-08.png"];
UIImage *change4 = [UIImage imageNamed:@"playalbum-09.png"];
UIImage *change5 = [UIImage imageNamed:@"playalbum-11.png"];
UIImage *change6 = [UIImage imageNamed:@"playalbum-12.png"];
UIImage *change7 = [UIImage imageNamed:@"playalbum-10.png"];
UIImage *change8 = [UIImage imageNamed:@"playalbum-13.png"];
UIImage *change9 = [UIImage imageNamed:@"ipadplay-16.png"];
UIImage *change10 = [UIImage imageNamed:@"ipadplay-17.png"];
UIImage *change11 = [UIImage imageNamed:@"ipadplay-18.png"];
UIImage *change12 = [UIImage imageNamed:@"ipadplay-19.png"];
UIImage *change13 = [UIImage imageNamed:@"ipadplay-20.png"];
UIImage *change14 = [UIImage imageNamed:@"ipadplay-21.png"];

int i;
for (i = 0; i < [AlbumsImages count]; i++) {


if ([[valueList objectAtIndex:i+1] intValue]) {
    if (i == 0) {
        [AlbumsImages replaceObjectAtIndex:0 withObject:change1];
    }
    if (i == 1) {
        [AlbumsImages replaceObjectAtIndex:1 withObject:change2];
    }
    if (i == 2) {
        [AlbumsImages replaceObjectAtIndex:2 withObject:change3];
    }
    if (i == 3) {
        [AlbumsImages replaceObjectAtIndex:3 withObject:change4];
    }
    if (i == 4) {
        [AlbumsImages replaceObjectAtIndex:4 withObject:change5];
    }
    if (i == 5) {
        [AlbumsImages replaceObjectAtIndex:5 withObject:change6];
    }
    if (i == 6) {
        [AlbumsImages replaceObjectAtIndex:6 withObject:change7];
    }
    if (i == 7) {
        [AlbumsImages replaceObjectAtIndex:7 withObject:change8];
    }
    if (i == 8) {
        [AlbumsImages replaceObjectAtIndex:8 withObject:change9];
    }
    if (i == 9) {
        [AlbumsImages replaceObjectAtIndex:9 withObject:change10];
    }
    if (i == 10) {
        [AlbumsImages replaceObjectAtIndex:10 withObject:change11];
    }
    if (i == 11) {
        [AlbumsImages replaceObjectAtIndex:11 withObject:change12];
    }
    if (i == 12) {
        [AlbumsImages replaceObjectAtIndex:12 withObject:change13];
    }
    if (i == 13) {
        [AlbumsImages replaceObjectAtIndex:13 withObject:change14];
    }

Y ahí es donde se guardan los álbumes al descargar

request = [ASIHTTPRequest requestWithURL:[NSURL URLWithString:URL]];
                [request setDownloadDestinationPath:[[NSHomeDirectory() stringByAppendingPathComponent:@"Library/Caches"] 
                                                     stringByAppendingPathComponent:[NSString stringWithFormat:@"%@.mp3",[self FileNameGetter:Albumid FileID:CurrentSongID ]]]];

Y eso es lo que sucedió cuando la aplicación se cargó.

NSArray *myPathList = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES);
NSString *myPath = [myPathList objectAtIndex:0];
NSString* storagePath = [myPath stringByAppendingPathComponent:@"purchasedAlbums.plist"];
NSArray* valueList = [[NSArray alloc] initWithContentsOfFile:storagePath];
if ([valueList count]==0) {
    valueList = [NSArray arrayWithObjects: @"0" ,@"0" ,@"0" , @"0" ,@"0" ,@"0" , @"0" ,@"0" ,@"0" , @"0" ,@"0" ,@"0" , @"0" ,@"0" ,@"0" , nil];
    [valueList writeToFile:storagePath atomically:true];
} 
valueList=nil;
myPathList=nil;
myPath =nil;
storagePath =nil;
[valueList release];
[myPathList release];
[myPath release];
[storagePath release];

realmente aprecio cualquier ayuda :)

preguntado el 03 de mayo de 12 a las 18:05

1 Respuestas

Primero, si solo desea mantener el contenido a través de sus actualizaciones, guárdelo en DocumentsDirectory en lugar de Cachés.

Y para mantener el progreso de la compra, puede usar restoreTransactions.

contestado el 03 de mayo de 12 a las 20:05

solía guardarlos en DocumentsDirectory antes, pero Apple rechazó la aplicación, así que los guardé en los cachés, ???? - Hasan Samir Hashem

Agregar no hacer copias de seguridad marca para esos archivos, por lo que no se sincronizarán con iCloud - Nikita Pestrov

amigo, ¿puedo configurar 'dontbackup' para el directorio de documentos? y ¿cómo puedo verificar si los archivos dentro del directorio de documentos están marcados con 'dontbackup'? - Hasan Samir Hashem

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.