2015-06-19 32 views
8

'u kullanmak yerine iOS aygıtını benzersiz olarak nasıl belirleyebilirim iOS uygulamamda, kullanıcıyı aygıt başına iOS uygulamasını kullanması için kısıtlamalıyım. Bunu yapmak için, UUID (Universally Unique Identifier) veya UDID (Unique Device Identifier)'u kullanabileceğimiz bir çözüm buldum. Ancak, this answer uyarınca UUID'yi kullanamıyorum çünkü uygulama silinirse veya yeniden yüklendiyse UUID değişmiştir ve bunu istemiyorum. Ayrıca, uygulama UDIDUDID kullanıyorsa Apple uygulamaları reddeder.UUID ve UDID

iOS aygıtını benzersiz olarak tanımlamanın bir yolu var mı.

+0

olduğunu. Apple gizlilik uğruna izin vermez. Ancak bazı yararlı verileri depolamak için Keychain erişimini kullanabilirsiniz. Ancak Apple yönergelerini kontrol edin. –

+0

@Can ATAC, Yorumunuz için teşekkür ederiz. Herhangi bir veriyi saklamak istemiyorum, aslında cihazdan benzersiz bir değer istiyorum. Bunu yapmak için başka bir yöntem var mı? – iKT

+0

UUID yoldur ... ve uygulama tasarımınıza bağlıdır. –

cevap

13

Elma uzak UDID'ler yaklaşması ile yaptığı uygulamalar arasında paylaşma imkanı yok (gerçi Anahtarlık saklanan takdirde kalıcı olabilir) ve uygulamalar reddedilecektir.END_BOLD Bu, benzersiz cihaz kimliği için aynı şeyi kullanır. Kaynak: TNW

Aradığınız Ne Yapamazsın Vendor ID

+0

@Vijayts, Cevabınız için teşekkürler. İki cihazın aynı VenderID'ye sahip olma ihtimali olduğu için bir kez daha şüphem var. Herhangi bir fikir? – iKT

+1

@iOSDev İki cihazın aynı satıcıya sahip olma şansı yoktur. Cihazınızdaki belirli uygulama grubunun her yüklemesi için benzersizdir. Örneğin, aynı uygulama satıcısının altındaki birçok uygulama, bu satıcının tüm uygulamaları kaldırılıp tekrar bu cihaza yüklenene kadar bir cihazda aynı satıcı kimliğine sahip olacaktır. Yalnızca bu durumda cihaz, aynı uygulama grubunun uygulaması için aynı cihaz için size yeni bir satıcı kimliği verecektir. Bu nedenle isim, SatıcıID. –

+0

@VijayTholpadi Farklı cihazlarda farklı olacağından emin misiniz? Dokümanlarda, "Aynı cihazdaki farklı satıcılardan gelen ve satıcıdan bağımsız olarak farklı cihazlardaki uygulamalar için farklı bir değer döndürülür" diyor. Sonra vendorId çözümdür. Ve her uygulama için farklı olmasını istiyorsam, vendorId ve bundle name ile bir karma yapabiliriz. Ve vendorID, advertisingId gibi sıfırlama yapmıyor, değil mi? – karim

0

benim projeler için bu kütüphaneyi kullanıyorum ve bir cazibe gibi çalışıyor, deneyin:

https://github.com/blackpixel/BPXLUUIDHandler

kolay kullanımı:

İthalat BPXLUUIDHandler.h ile UUID Al İşte tüm

[BPXLUUIDHandler UUID] 

...

iOS 5 gibi, Apple cihaz benzersiz tanımlayıcı api onaylamamıştır ve yerine CFUUIDCreate ve NSUserDefaults tavsiye dost bir Obj-C değiştirme sunmamıştır:

İşte projenin github sayfasından bazı bilgiler verilmiştir.

CFUUIDCreate oynaması basittir ve ne NSUserDefaults olmakla bu çözüm birkaç farklı şekilde başarısız:

  • O değil UUID'sini almak için hızlı bir kerelik bir çağrı; Kendinizi kolaylaştıracak kendi sarıcınızı yazmanız gerekiyor
  • Kalıcı değildir; Uygulamayı silme UUID silip süpürüyor
+0

@iOSDev sorunu çözüyor musunuz? – mgyky

+0

#gyer Cevabınız için teşekkür ederiz. Ancak UUID kullanırken sorunla karşılaşıyorum. Çözmenin başka bir yolu var mı? – iKT

+0

@iOSDev'e hoş geldiniz. "UUID'yi kullanamıyorum veya yeniden yüklendiyse UUID'yi kullanamıyorum, çünkü bunu istemiyorum" diye yazmıştınız, fakat (BPXLUUIDHandler) kullanıcı önerileri uygulamayı yeniden yüklediğinde değişmediğini öneriyorum. Tam bir geri yükleme yaparlarsa bu değişir, ancak çoğu kullanıcı yeni bir cihaz alana kadar değişmez. Lütfen şunu okuyun: https://blackpixel.com/writing/2012/03/unique-identifier-is-dead-long-live-unique-identifier.html – mgyky