【问题标题】:TestFlight setDeviceIdentifier in production生产环境中的 TestFlight setDeviceIdentifier
【发布时间】:2013-11-12 15:38:48
【问题描述】:

在 TestFlight 的documentation 中,它说在生产中设置设备标识符可能会导致您的应用程序被拒绝。

但是,它没有说明使用广告 ID 作为替代品。我的意思是,苹果似乎只会拒绝它,因为在 iOS 7 中不推荐使用检索 UDID。

话虽如此,如果我在 TestFlight 中使用广告标识符跟踪我的用户,苹果会在意吗?

// Obsolete in iOS 7 and Apple will reject application...
MonoTouch.TestFlight.TestFlight.SetDeviceIdentifier(UIDevice.CurrentDevice.UniqueIdentifier);
// ...but will it reject this?
MonoTouch.TestFlight.TestFlight.SetDeviceIdentifier(ASIdentifierManager.SharedManager.AdvertisingIdentifier.ToString());
MonoTouch.TestFlight.TestFlight.TakeOff(applicationToken);

谢谢!

【问题讨论】:

  • 实际上,UDID 访问在早期版本的 iOS 中已被弃用。在 iOS 7 中,UDID 访问被禁用。

标签: ios appstore-approval testflight udid


【解决方案1】:

UDID 已弃用,因此他们跟踪用户的唯一方法是使用广告标识符。

这样没有错,审核时不会出问题。

【讨论】:

  • 我认为您的意思是 UDID 不是 UUID。不是一回事。两者都由十六进制字符串表示,但位数不同。
【解决方案2】:

识别设备/用户的另一种方法是使用 NSUUID 类的 UUID 方法创建一个 UUID 并将其 hex-string 表示写入用户默认数据库。

在 iOS 6 及更高版本中,Apple 已经为您完成了这项工作。只需在 UIDevice 类上调用 identifierForVendor 方法即可。

【讨论】:

    【解决方案3】:

    这是一个可用于 iOS6 及更高版本的代码:

    #define kApplicationUUIDKey @"kApplicationUUIDKey"
    
    - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
    {
        NSString *UUID = [[NSUserDefaults standardUserDefaults] objectForKey:kApplicationUUIDKey];
        if (!UUID) {
            UUID = [[[NSUUID UUID] UUIDString] stringByReplacingOccurrencesOfString:@"-" withString:@""];
    
            [[NSUserDefaults standardUserDefaults] setObject:UUID forKey:kApplicationUUIDKey];
            [[NSUserDefaults standardUserDefaults] synchronize];
        }
    
        [TestFlight setDeviceIdentifier:UUID];
        [TestFlight takeOff:kTestFlightIdentifierKey];
    
    ...
    
    }
    

    【讨论】:

      猜你喜欢
      • 2019-10-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-08-25
      • 2011-08-20
      • 2021-05-03
      相关资源
      最近更新 更多