Iphone 如何在iOS应用程序上只运行一次代码(即使应用程序将被删除并重新安装)?
如何在iOS应用程序上只运行一次代码(即使应用程序将被删除并重新安装)Iphone 如何在iOS应用程序上只运行一次代码(即使应用程序将被删除并重新安装)?,iphone,ios,ipad,Iphone,Ios,Ipad,如何在iOS应用程序上只运行一次代码(即使应用程序将被删除并重新安装) 例如,我们需要为所有新用户制作一份礼物。但是如果你使用它,你必须使用应用程序内购买再次购买。你必须为它制作一个web服务,我不认为还有其他出路。保存设备令牌。您可以在钥匙链中存储标志。即使在删除应用程序后,该功能仍会在设备上持续存在。您还可以使用iCloud键值设置,该设置可用于控制同一帐户上的多个设备 下面是一个向钥匙链添加信息(在本例中,用户是否购买了东西)并将其取回的示例 static NSString *kI
例如,我们需要为所有新用户制作一份礼物。但是如果你使用它,你必须使用应用程序内购买再次购买。你必须为它制作一个web服务,我不认为还有其他出路。保存设备令牌。您可以在钥匙链中存储标志。即使在删除应用程序后,该功能仍会在设备上持续存在。您还可以使用iCloud键值设置,该设置可用于控制同一帐户上的多个设备 下面是一个向钥匙链添加信息(在本例中,用户是否购买了东西)并将其取回的示例
static NSString *kIAPKeyChainDescription = @"MyAppPurchaseKey";
static NSString *kPurchaseTag = @"YES";
+ (void)recordTransaction:(NSString *)productId
{
NSMutableDictionary* dict = [NSMutableDictionary dictionary];
NSData *tag = [kPurchaseTag dataUsingEncoding:NSUTF8StringEncoding];
[dict setObject: (id) kSecClassGenericPassword forKey: (id) kSecClass];
[dict setObject: kIAPKeyChainDescription forKey:(id) kSecAttrDescription];
[dict setObject: productId forKey: (id) kSecAttrService];
[dict setObject: tag forKey: (id) kSecValueData];
OSStatus result = SecItemAdd ((CFDictionaryRef) dict, NULL);
if (result != 0)
NSLog(@"SecItemAdd error code is %ld",result);
}
+ (BOOL)isPurchased:(NSString *)productId
{
NSMutableDictionary* query = [NSMutableDictionary dictionary];
[query setObject: (id) kSecClassGenericPassword forKey: (id) kSecClass];
[query setObject: productId forKey: (id) kSecAttrService];
[query setObject:(id)kCFBooleanTrue forKey:(id)kSecReturnData];
NSData* upgradeItemData = nil;
OSStatus result = SecItemCopyMatching ( (CFDictionaryRef) query, (CFTypeRef*) &upgradeItemData );
if (result != errSecSuccess && result != errSecItemNotFound){
NSLog(@"SecItemCopyMatching errcode is %ld",result);
return NO;
}
if ( !upgradeItemData || result == errSecItemNotFound)
{
return NO;
}
else
{
NSString* s = [[[NSString alloc]
initWithData: upgradeItemData
encoding: NSUTF8StringEncoding] autorelease];
[upgradeItemData release];
return [s boolValue];
}
}
“例如,我们需要为所有新用户制作一份礼物。但是如果您使用它,您应该使用应用内购买再次购买。”-那么您想运行一次或多次吗?AppStore上有免费的应用内购买。但是我们需要在没有用户交互的情况下处理它。在后台点击一个服务并永远保存设备令牌。设计一些忍者算法,以便在每次新安装发生时加快搜索速度。对于较老的用户,使用userdefaultsHow添加和检查密钥链?和+1,我也打算写这篇文章。最简单的解决办法。@amar你是说“万无一失”,对吗?嗯,它不在越狱的设备上,但是没有更好的方法了,阿飞。同意web服务很昂贵,而且经过几天的数据堆积,我有
未定义的架构符号armv7
。解决方案: