2015-06-19 19 views
8

Trong ứng dụng iOS của tôi, tôi phải hạn chế người dùng sử dụng ứng dụng iOS cho mỗi thiết bị. Để thực hiện điều này, tôi đã tìm thấy giải pháp mà chúng tôi có thể sử dụng UUID (Universally Unique Identifier) hoặc UDID (Unique Device Identifier). Nhưng theo this answer Tôi không thể sử dụng UUID, bởi vì nếu ứng dụng bị xóa hoặc cài đặt lại UUID đã được thay đổi và tôi không muốn điều này. Ngoài ra, Apple từ chối ứng dụng nếu ứng dụng sử dụng UDID.Cách xác định thiết bị iOS duy nhất thay vì sử dụng UUID và UDID

Có cách nào để xác định thiết bị iOS duy nhất không.

+0

Bạn không thể. Apple không cho phép nó vì mục đích bảo mật. Nhưng bạn có thể sử dụng quyền truy cập Keychain để lưu trữ một số dữ liệu hữu ích. Nhưng hãy xem hướng dẫn của Apple. –

+0

@Có thể ATAC, Cảm ơn bạn đã bình luận. Tôi không muốn lưu trữ bất kỳ dữ liệu nào, thực sự tôi muốn một số giá trị duy nhất từ ​​thiết bị. Có phương pháp nào khác để làm điều này không? – iKT

+0

UUID là cách ... và phụ thuộc vào thiết kế ứng dụng của bạn. –

Trả lời

13

của Apple đã làm đi với cách tiếp cận của UDID và sẽ từ chối ứng dụng sử dụng cùng một tính năng nhận dạng thiết bị duy nhất. Nguồn: TNW

gì bạn đang tìm kiếm là Vendor ID

+0

@Vijayts, Cảm ơn bạn đã trả lời. Tôi có một nghi ngờ nhiều hơn là có bất kỳ khả năng rằng hai thiết bị sẽ có cùng một VenderID. Bất kỳ ý tưởng? – iKT

+1

@iOSDev Không có cơ hội cho hai thiết bị có cùng một vendorID. Nó là duy nhất cho mọi cài đặt của nhóm ứng dụng cụ thể trên thiết bị của bạn. Ví dụ: nhiều ứng dụng trong cùng một nhà cung cấp ứng dụng sẽ có cùng một ID nhà cung cấp trên thiết bị cho đến khi tất cả các ứng dụng của nhà cung cấp đó được gỡ cài đặt và cài đặt lại trên thiết bị đó. Chỉ trong trường hợp đó, thiết bị sẽ cung cấp cho bạn ID nhà cung cấp mới cho cùng một thiết bị cho cùng một ứng dụng của nhóm ứng dụng. Do đó tên, VendorID. –

+0

@VijayTholpadi Bạn có chắc chắn nó sẽ khác trên các thiết bị khác nhau? Mặc dù trong tài liệu nó nói, "Một giá trị khác được trả lại cho các ứng dụng trên cùng một thiết bị đến từ các nhà cung cấp khác nhau và cho các ứng dụng trên các thiết bị khác nhau bất kể nhà cung cấp." Sau đó vendorId là giải pháp. Và nếu tôi muốn nó khác nhau cho mỗi ứng dụng thì chúng ta có thể tạo một hash với tên vendorId và bundle. Và vendorID không được đặt lại như advertisingId, phải không? – karim

0

Tôi đang sử dụng thư viện này cho các dự án của tôi, và nó làm việc như một nét duyên dáng, hãy thử:

https://github.com/blackpixel/BPXLUUIDHandler

dễ sử dụng:

nhập BPXLUUIDHandler.h Lấy UUID với

[BPXLUUIDHandler UUID] 

Thats tất cả ...

Dưới đây là một số thông tin từ trang github của dự án:

Tính đến iOS 5, Apple đã phản đối các thiết bị duy nhất api nhận dạng và vẫn chưa cung cấp một sự thay thế obj-C thân thiện, thay vì giới thiệu CFUUIDCreate và NSUserDefaults.

CFUUIDCreate không phải là rất phức tạp và không phải là NSUserDefaults, nhưng giải pháp này không thành công trong một vài cách khác nhau:

  • Đó không phải là một cách nhanh chóng one-shot gọi để có được những UUID; bạn phải viết trình bao bọc của riêng bạn để làm cho nó thân thiện với nhau
  • Nó không tồn tại; xóa các ứng dụng thổi đi những UUID (có thể được tiếp tục tồn nếu lưu trữ trong keychain mặc dù)
  • Không có cách nào để chia sẻ nó giữa các ứng dụng
+0

@ iOSDev có khắc phục được sự cố của bạn không? – mgyky

+0

#gyer Cảm ơn câu trả lời của bạn. Nhưng tôi đang gặp vấn đề khi sử dụng UUID. Bạn có cách khác để giải quyết không. – iKT

+0

Bạn đang chào đón @iOSDev. Bạn đã viết "Tôi không thể sử dụng UUID, bởi vì nếu ứng dụng bị xóa hoặc cài đặt lại UUID đã được thay đổi và tôi không muốn điều này", nhưng những gì tôi đề nghị (BPXLUUIDHandler) nó không thay đổi khi người dùng cài đặt lại ứng dụng. Điều đó sẽ thay đổi nếu họ khôi phục hoàn toàn, nhưng đối với hầu hết người dùng sẽ không thay đổi cho đến khi họ nhận được thiết bị mới. Vui lòng đọc điều này: https://blackpixel.com/writing/2012/03/unique-identifier-is-dead-long-live-unique-identifier.html – mgyky

Các vấn đề liên quan