Mantener los contenidos comprados mientras se actualiza
Frecuentes
Visto 89 equipos
-2
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 :)
1 Respuestas
1
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
No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas objective-c ios xcode ios4 in-app-purchase or haz tu propia pregunta.
solía guardarlos en DocumentsDirectory antes, pero Apple rechazó la aplicación, así que los guardé en los cachés, ???? - Hasan Samir Hashem
Añada 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