如果我从 AppStore 安装并重新安装应用程序,identifierForVendor 会改变吗?
Will identifierForVendor change if I install and reinstall an application from the AppStore?
这是我根据客户需求为我的iOS应用程序实施一台设备和一张凭证的逻辑
逻辑
我正在开发一个 iOS 应用程序,它调用 Web 服务进行登录,那时我将登录凭据连同供应商标识符 (identifierForVendor) 一起发送到 Web 服务器,以便为那些 credentials.So 用户只能拥有一个设备和一个凭据。
然后,此标识符将存储在网络服务器的数据库中,也会存储在设备中 database.Next 当用户打开应用程序并首先尝试从网络服务器下载数据时,用户设备上的本地标识符ForVendor 将与存储在设备上的标识符进行比较网络服务器。
关注
我担心如果我从 Appstore 下载应用程序并从 Appstore 重新安装,identifierForVendor 是否会改变通过删除应用程序?
这是以下场景:
已从 AppStore 下载名为“ABCDApp”的应用程序。使用我的凭据登录。我得到了一个 identifierForVendor 例如:“1234”
我从我的 phone 中删除了该应用程序,然后再次从 AppStore 重新安装了相同的应用程序
我会得到相同的供应商 ID“1234”吗?或者,如果我从 AppStore 重新安装,我将获得不同的供应商 ID? 请注意,该供应商只有一个应用程序,没有其他应用程序
我从几个 link 那里得知,如果我从 APPSTORE 更新应用程序,它不会改变。接下来的 link 是 : Vendor ID does not changes when Updating app from Appstore。但是重新安装机箱呢?
这是代码:
NSString *uuid = [[UIDevice currentDevice] identifierForVendor].UUIDString
我担心的是:如果我再次从应用商店卸载并重新安装该应用程序会怎样?它会改变吗? 如果它改变了我如何处理一个设备,一个我计划为我的应用程序实施的凭证逻辑?
The value changes when the user deletes all of that vendor’s apps from the device and subsequently reinstalls one or more of them.
因此除非用户安装了来自同一供应商的其他应用程序,否则删除并重新安装后此 ID 将发生变化。在您的情况下,同一供应商没有其他应用程序,这意味着 ID 将 更改,因此可能不适合您的情况。
一种替代方法是将本地创建的 UUID 存储在钥匙串中,因为钥匙串条目目前在删除和重新安装应用程序后仍然存在。但是,这是一个未记录的(错误的)功能,可能随时中断。
是的,每次安装它都会发生变化。如果您想始终向服务发送相同的 UUID,您可以将 UUID 保存在 KeyChainStore 中,提供以下 link:
enter link description here
我已经在上面提供的 link 的帮助下解决了这个问题。
NSString* identifier;
UICKeyChainStore *keychainStore = [UICKeyChainStore keyChainStore];
if(keychainStore[@"UDID"])
{
identifier=keychainStore[@"UDID"];
NSLog(@"output is : %@", identifier);
[SessionManager saveUDID:identifier];
}
else
{
identifier = [[[UIDevice currentDevice] identifierForVendor] UUIDString]; // IOS 6+
NSLog(@"output is : %@", identifier);
keychainStore[@"UDID"] = identifier;
[SessionManager saveUDID:identifier];
}
+(void)saveUDID:(NSString*)udid
{
[[NSUserDefaults standardUserDefaults] setObject:udid forKey:@"UDID"];
[[NSUserDefaults standardUserDefaults] synchronize];
}
+(NSString*)getUDID
{
NSString *udid = [[NSUserDefaults standardUserDefaults]
stringForKey:@"UDID"];
return udid;
}
// logout from app
-(void)logOutFromApp
{
UIApplication*app=[UIApplication sharedApplication];
NSDictionary*dic;
AppDelegate *appDel = (AppDelegate *)[UIApplication sharedApplication].delegate;
[appDel application:app didFinishLaunchingWithOptions:dic];
[self.delegate logoutFired];
}
希望对您有所帮助。快乐编码。
这是我根据客户需求为我的iOS应用程序实施一台设备和一张凭证的逻辑
逻辑
我正在开发一个 iOS 应用程序,它调用 Web 服务进行登录,那时我将登录凭据连同供应商标识符 (identifierForVendor) 一起发送到 Web 服务器,以便为那些 credentials.So 用户只能拥有一个设备和一个凭据。
然后,此标识符将存储在网络服务器的数据库中,也会存储在设备中 database.Next 当用户打开应用程序并首先尝试从网络服务器下载数据时,用户设备上的本地标识符ForVendor 将与存储在设备上的标识符进行比较网络服务器。
关注
我担心如果我从 Appstore 下载应用程序并从 Appstore 重新安装,identifierForVendor 是否会改变通过删除应用程序?
这是以下场景:
已从 AppStore 下载名为“ABCDApp”的应用程序。使用我的凭据登录。我得到了一个 identifierForVendor 例如:“1234”
我从我的 phone 中删除了该应用程序,然后再次从 AppStore 重新安装了相同的应用程序 我会得到相同的供应商 ID“1234”吗?或者,如果我从 AppStore 重新安装,我将获得不同的供应商 ID? 请注意,该供应商只有一个应用程序,没有其他应用程序
我从几个 link 那里得知,如果我从 APPSTORE 更新应用程序,它不会改变。接下来的 link 是 : Vendor ID does not changes when Updating app from Appstore。但是重新安装机箱呢?
这是代码:
NSString *uuid = [[UIDevice currentDevice] identifierForVendor].UUIDString
我担心的是:如果我再次从应用商店卸载并重新安装该应用程序会怎样?它会改变吗? 如果它改变了我如何处理一个设备,一个我计划为我的应用程序实施的凭证逻辑?
The value changes when the user deletes all of that vendor’s apps from the device and subsequently reinstalls one or more of them.
因此除非用户安装了来自同一供应商的其他应用程序,否则删除并重新安装后此 ID 将发生变化。在您的情况下,同一供应商没有其他应用程序,这意味着 ID 将 更改,因此可能不适合您的情况。
一种替代方法是将本地创建的 UUID 存储在钥匙串中,因为钥匙串条目目前在删除和重新安装应用程序后仍然存在。但是,这是一个未记录的(错误的)功能,可能随时中断。
是的,每次安装它都会发生变化。如果您想始终向服务发送相同的 UUID,您可以将 UUID 保存在 KeyChainStore 中,提供以下 link: enter link description here
我已经在上面提供的 link 的帮助下解决了这个问题。
NSString* identifier;
UICKeyChainStore *keychainStore = [UICKeyChainStore keyChainStore];
if(keychainStore[@"UDID"])
{
identifier=keychainStore[@"UDID"];
NSLog(@"output is : %@", identifier);
[SessionManager saveUDID:identifier];
}
else
{
identifier = [[[UIDevice currentDevice] identifierForVendor] UUIDString]; // IOS 6+
NSLog(@"output is : %@", identifier);
keychainStore[@"UDID"] = identifier;
[SessionManager saveUDID:identifier];
}
+(void)saveUDID:(NSString*)udid
{
[[NSUserDefaults standardUserDefaults] setObject:udid forKey:@"UDID"];
[[NSUserDefaults standardUserDefaults] synchronize];
}
+(NSString*)getUDID
{
NSString *udid = [[NSUserDefaults standardUserDefaults]
stringForKey:@"UDID"];
return udid;
}
// logout from app
-(void)logOutFromApp
{
UIApplication*app=[UIApplication sharedApplication];
NSDictionary*dic;
AppDelegate *appDel = (AppDelegate *)[UIApplication sharedApplication].delegate;
[appDel application:app didFinishLaunchingWithOptions:dic];
[self.delegate logoutFired];
}
希望对您有所帮助。快乐编码。