1

アプリの有効期限を設定する必要があります。現在、アプリを開いた日付を保存しており、コードは次のようになります

NSError *error;
NSEntityDescription *entityDesc = [NSEntityDescription entityForName:@"ExpiredDate" inManagedObjectContext:context];
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc]init];
[fetchRequest setEntity:entityDesc];
NSArray *fetchedObjects = [[context executeFetchRequest:fetchRequest error:&error] retain];

[fetchRequest release];

if([fetchedObjects count ]<=0)
{
    NSDate *todays=[[NSDate alloc]init];

    NSDateFormatter *date=[[NSDateFormatter alloc]init];
    [date setDateFormat:@"MM/DD/YYYY"];
    [date stringFromDate:todays];
   NSString *datelabel = [NSString stringWithFormat:@"%@",
                            [date stringFromDate:todays]];



    NSManagedObject *objUser;
    NSError *error;

    objUser = [NSEntityDescription insertNewObjectForEntityForName:@"ExpiredDate" inManagedObjectContext:context];
    [objUser setValue:datelabel forKey:@"date"];                 

    if (![context save:&error]) 
    {
        NSLog(@"Problem saving: %@", [error localizedDescription]);
    }



}
else
{
    for(int i=0; i< [fetchedObjects count]; i++)
    {
        edate = [fetchedObjects objectAtIndex:i];

    }

    NSLog(@"%@",edate.date); 
   if(onemonth)
    {
    alertview:if one month completed then i have to show a pop up.please upgrade            }
   else
    {
        my code should execute
    }
}

今、私は現在の日付で1か月の日付(私が保存し、文字列のように保存している)を数えたいだけです。月が交差した場合は、アップグレードしてくださいのようにポップアップを表示する必要があります。

4

1 に答える 1

2

DateComponent を使用して、日付に +1 を追加して翌月を検索します。

NSDate *yourDate=...;
NSCalendar *calendar=[[NSCalendar alloc] initWithCalendarIdentifier: NSGregorianCalendar];
NSDateComponents *components=[[NSDateComponents alloc]init];
components.month=1;
NSDate *nextMonthDay=[calendar dateByAddingComponents:components toDate:yourDate options:0];

アプリが起動するたびに、userdefaults の plist を読み取り、nextMonthDay が等しい場合は確認し、アプリに期限切れのアラートを表示させ、アプリを閉じるか、すべての機能を無効にします。

編集:

//I am setting it as today's date, assumed tha app installed today
NSDate *installedDate=[NSDate dateWithNaturalLanguageString:@"16/Dec/2012"]; //this method wont work on ios, convert using formatter.


//now finding and setting expiry date
NSCalendar *calendar=[[NSCalendar alloc] initWithCalendarIdentifier: NSGregorianCalendar];
NSDateComponents *components=[NSDateComponents new];
components.month=1;
NSDate *expiryDate=[calendar dateByAddingComponents:components toDate:installedDate options:0];

NSLog(@"Ins : %@, Exp : %@", installedDate, expiryDate);

if ([[NSDate date] isGreaterThanOrEqualTo:expiryDate]) {
    NSLog(@"*** Expired ***");
}
else{
    NSLog(@"*** This is trial version ***");
}
于 2013-01-15T08:33:49.873 に答える