我正在使用我的[[UIDevice currentDevice] uniqueIdentifier]
所有应用程序,Apple不再允许使用它uniqueIdentifier
.我需要一些东西来代替uniqueIdentifier
我用来识别用户的东西,即使用户删除了应用程序并再次安装它,(并且还得到苹果批准我的应用程序).
谢谢
大家好,因为使用udid的读取应用程序将从2013年5月1日起不被接受.如果我是正确的话,我们必须使用IOS 6 identifierForVendor来获取唯一标识符.但是我们能够将最小开发目标设置为4.3吗?如果设备仍在运行IOS 4.3或5.0,我们可以如何满足UDID,因为identifierForVendor仅在IOS6中可用?这是否意味着我们使用MAC地址的哈希作为唯一标识符?这将支持所有IOS版本吗?
我想知道如何使用Objective-c为iPhone/iPad生成设备的唯一ID
因此,一旦应用程序安装在设备上,我们就应该跟踪该deviceID
我已经搜索过检索iPhone/iPad的IMEI,但是在objective-c中不允许这样做.
然后我搜索生成iPhone/iPad的UDID,但每次我在模拟器上启动它时都会生成不同的ID.
可以使用Xcode发现iOS设备标识符.我需要下载的每个应用都有一个唯一的标识符.我想在生成随机数,但它们可能会多次生成相同的数字!有人有想法吗?
首先,我想说我已经完全清楚uniqueIdentifier
已被弃用且有identifierForVendor
&advertisingIdentifier
.
我的问题是,如果有一种方法可以获得一个完全持久的设备标识符,它可以通过重新启动,应用程序卸载等方式生存.
目前我们使用identifierForVendor
哪个是好的 - 但我们产品的主要要求之一是允许快速登录而无需任何注册,当人们删除我们的应用程序时,他们的保存充当"本地保存"(即使它托管在我们的服务器上) - 作为他们的identifierForVendor
变化.
希望有人比我找到答案更好运(或者如果有答案的话:P)
谢谢
我使用以下代码显示设备的UDID.但它显示空值
即2014-05-12 11:56:06.896 LoginScreen [195:60b] deviceUDID:(null)
NSUUID *deviceId;
deviceId = [UIDevice currentDevice].identifierForVendor;
NSLog(@"deviceUDID: %@",deviceID);
Run Code Online (Sandbox Code Playgroud)
对不起你们所有人.我犯了一个愚蠢的错误
这里NSUUID实例是deviceId,我在NSLog中打印deviceID :)
现在它对我有用.谢谢大家
我希望我的应用用户能够投票一次.这意味着我需要他们的UDID.
由于我不会唠叨注册我的应用程序,我发现有必要为该设备使用一些标识.
我听说Apple已弃用设备UDID.
我怎么能做到这一点?
是否有像每个iPhone/iPod Touch的mac地址一样的唯一ID?
我是否必须要求用户传输此类唯一ID?
在iOS5中Apple已经弃用了[UIDevice uniqueIdentifier]
(请参阅http://techcrunch.com/2011/08/19/apple-ios-5-phasing-out-udid/)
它目前仍然有效,但显然我们想要迁移我们的应用程序使用它.我们不能放弃冷火鸡,但是我们正在推出一种迁移策略来保留用户数据而不将其绑定到实际的物理设备(我们滥用设备UDID的唯一原因).
这个Stack Question是使用UDID的绝佳选择.所以我有一个新的UDID要使用.
我担心那些不打算升级我们的应用程序的用户,并最终更新他们的iOS版本,以致不再使用已弃用的电话.我们的代码假设uniqueIdentfier调用保证始终"工作".
如何检查uniqueIdentifier调用是否成功,以及是否未使用上述问题中提供的备用UDID?
我可以检查UIDevice是否响应选择器?我可以检查零UDID吗?
我已经使用以下方法大约一个月了,没有问题。即使卸载应用程序,设备ID仍保持不变。最近,我注意到我的设备ID发生了变化。我最近在Xcode6上进行了很多该应用程序的构建。这可能是原因吗?我希望我确切知道它何时改变。这让我感到惊讶。当应用程序在应用程序商店上架时,我有什么需要担心的吗?也许这只是一个Xcode构建问题?我只是在寻找一种确保唯一设备ID的简单方法。我会使用advertiseIdentifer,但我听说将其用于其他目的,否则广告将被应用商店拒绝。这是代码:
+ (NSString *)getUserID
{
NSString *Appname = [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleName"];
NSString *retrieveuuid = [SSKeychain passwordForService:Appname account:@"user"];
if(retrieveuuid == NULL)
{
CFUUIDRef newUniqueId = CFUUIDCreate(kCFAllocatorDefault);
retrieveuuid = (__bridge_transfer NSString*)CFUUIDCreateString(kCFAllocatorDefault, newUniqueId);
CFRelease(newUniqueId);
[SSKeychain setPassword:retrieveuuid forService:Appname account:@"user"];
}
NSLog(@"%@", retrieveuuid);
return retrieveuuid;
}
Run Code Online (Sandbox Code Playgroud) 我在网上搜索了答案并找到了不少解决方案,但不得不承认我并不理解,因为我很新,如何应用答案,一个例子是:UIDevice uniqueIdentifier已弃用 - 现在该怎么办?
我真的很感激,如果有人可以向我展示如何在下面的代码中将解决方案应用于该问题的示例,因为不推荐使用以下行(uniqueIdentifier),代码行来自Cocos2d CLScoreServerRequest.m,但是在其他几个中出现了好:
device = [[UIDevice currentDevice] uniqueIdentifier];
Run Code Online (Sandbox Code Playgroud)
该功能如下:
-(BOOL) requestScores:(tQueryType)type
limit:(int)limit
offset:(int)offset
flags:(tQueryFlags)flags
category:(NSString*)category
{
// create the request
[receivedData setLength:0];
// it's not a call for rank
reqRankOnly = NO;
NSString *device = @"";
if( flags & kQueryFlagByDevice )
device = [[UIDevice currentDevice] uniqueIdentifier];
// arguments:
// query: type of query
// limit: how many scores are being requested. Default is 25. Maximun is 100
// offset: offset of the scores
// flags: bring …
Run Code Online (Sandbox Code Playgroud) 我已就此做了大量研究,所以请在将此问题标记为与其他问题类似之前阅读该问题.
我们的应用程序需要唯一地确定iPhone,即使用户完全擦拭手机,当他运行我们的应用程序时,我们可以确定它是相同的设备.最重要的是我们还需要确定多个Apple ID用户的设备,因此包含Keychain访问和uniqueVendorID的建议可能无法正常工作,因为当其他用户开始使用该手机时,这些建议会发生变化.正如我读过的那样,使用MAC地址和设备的旧UDID从iOS 6.0开始不再可用.我通过[的UIDevice identifierForVendor]去,但是当所有由同一供应商提供的应用程序已被卸载此NSUUID改变参考.
我查看了这些资源:
和
我不能透露我的应用程序因不披露而执行的工作性质,但要澄清我的要求:
多个用户可能会在同一部手机上使用我们的应用程序,我需要一种方法来了解之前使用的设备用户A并且已报告已移交给用户B的设备与运行我们的应用程序的设备相同.有没有办法实现这个目标?
ios ×10
iphone ×7
objective-c ×5
udid ×5
ios7 ×2
uuid ×2
xcode ×2
c++ ×1
cocoa-touch ×1
deprecated ×1
ipad ×1
privacy ×1
random ×1