Post

Replies

Boosts

Views

Activity

Can I remove a language from localization?
My iOS app (paid app) is currently localized to ten different languages. However, some of the languages are not justifying the required ongoing efforts to support them. I therefore wish to remove a specific language, but I wonder if there are any basic rules or limitations about removing a language from an app. For example, am I required announcing the removal in some place (e.g. App Store or my website), for a predefined time period (e.g. one year ahead of removal) I can easily envision a case where a user who just purchased the app with support for her native language, have the app suddenly appear in English on the next update from the App Store. And that after paying nicely for the app and putting the efforts to build its database. That would obviously frustrate the user. Any thoughts about how to deal with this?
6
0
3.7k
Oct ’20
iOS 14: should IAP succeed or fail when re-purchasing auto-renewable subscription?
I am currently testing IAP of auto-renewable subscription with Sandbox account. Purchase auto-renewable subscription Purchase the subscription again during the period of validity. SKPaymentTransactionStatePurchasing arrives Popup appears "You are currently subscribed" with "Manage" and "OK" buttons. So far this is common to iOS 13 and 14. However, when tapping the "OK" button, the flow continues with a different behavior as follow: iOS 13: Purchase fails as SKPaymentTransactionStateFailed arrives with SKErrorPaymentCancelled iOS 14: Purchase succeeds as SKPaymentTransactionStatePurchased arrives This new behavior affects the code that I am writing so I need to confirm that this behavior was actually changed by design on iOS 14 and it's the expected one. I found no documentation for such change, so any reference would be greatly appreciated. It also would be interesting to know if anyone else detected this behavior and whether this behavior appears in production environment or only in test environment.
1
0
1.3k
Oct ’20
"-com.apple.CoreData.ConcurrencyDebug 1" crashes iOS app according to its name on iOS 14
It's hard to believe, but when using the run argument "-com.apple.CoreData.ConcurrencyDebug 1", the app would crash consistently just because its name (PRODUCT_NAME variable in Xcode build settings) starts with "Music" or "Musik". Simply changing the target name prevents the crash. This issue started appearing only on iOS 14.0 To reproduce: Use Xcode 12.01 to create a new project -> iOS -> App. Use Core Data and Objective-c in the wizard settings. Enter an app name which is starting with "Music" or "Musik". For example "MusicTest". Place "-com.apple.CoreData.ConcurrencyDebug 1" in the scheme run arguments. Add a new entity to the data model named "TestEnt" Add the following code to the end of the AppDelegate.m file. (void)test {   //   // Set run argument in the scheme as follow:   // -com.apple.CoreData.ConcurrencyDebug 1   //   NSLog(@"TEST");   dispatch_async(dispatch_get_global_queue(QOS_CLASS_USER_INITIATED, 0), ^{     NSManagedObjectContext *managedObjectContext = [self managedObjectContext];     [managedObjectContext performBlockAndWait:^{       NSError *error = nil;       NSFetchRequest *request = [NSFetchRequest fetchRequestWithEntityName:@"TestEnt"];       NSArray *result = [managedObjectContext executeFetchRequest:request error:&error];       NSLog(@"result=%@", result);     }];   }); } (NSManagedObjectContext *)managedObjectContext {       // The old-fashion way to create a managed object conttext       NSString *documentsDir = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject];   NSString *storeFilePath = [[documentsDir stringByAppendingPathComponent:@"MusicTest"] stringByAppendingPathExtension:@"sqlite"];   NSURL *storeURL = [NSURL fileURLWithPath:storeFilePath];           NSURL *objectModelURL = [[NSBundle mainBundle] URLForResource:@"MusicTest"                           withExtension:@"momd"];   NSManagedObjectModel *objectModel = [[NSManagedObjectModel alloc] initWithContentsOfURL:objectModelURL];       NSPersistentStoreCoordinator *coordinator = [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel:objectModel];       NSDictionary *options = @{NSMigratePersistentStoresAutomaticallyOption: @YES,                NSInferMappingModelAutomaticallyOption: @YES};   NSError *error = nil;   [coordinator addPersistentStoreWithType:NSSQLiteStoreType                configuration:nil                     URL:storeURL                   options:options                    error:&error];       NSManagedObjectContext *managedObjectContext = nil;   if (coordinator != nil) {     managedObjectContext = [[NSManagedObjectContext alloc] initWithConcurrencyType:NSPrivateQueueConcurrencyType];     managedObjectContext.persistentStoreCoordinator = coordinator;     managedObjectContext.mergePolicy = NSMergeByPropertyObjectTrumpMergePolicy;   }       return managedObjectContext; } Modify code on ViewController.m as follow: (void)viewDidLoad {   [super viewDidLoad];       [(AppDelegate *)UIApplication.sharedApplication.delegate test]; } Run project and view crash coming. Multithreading_Violation_AllThatIsLeftToUsIsHonor Select MusicTest project on the project navigator. Rename "MusicTest" appearing under "TARGETS" on the main window to "MyMusicTest" Run project again No crash this time. Did Anyone encounter this issue? Can someone from Apple kindly reply?
2
0
4.1k
Oct ’20