2013-08-16 63 views
10

Vì Apple không sử dụng Số nhận dạng thiết bị duy nhất cho ứng dụng, cách tiếp cận tốt nhất để liên kết lại Ứng dụng doanh nghiệp trên thiết bị đã được đăng ký với MDM là gì?Số nhận dạng duy nhất cho MDM iOS

Từ tài liệu tham chiếu Giao thức MDM, đăng ký vẫn đang sử dụng UDID cho thủ tục đăng ký.

Chúng tôi không thể sử dụng số nhận dạng mớiForVendor vì nó không giống với UDID cho việc đăng ký.

Hãy để tôi cập nhật làm thế nào tôi thực hiện giải pháp MDM tôi,

  1. thiết bị sẽ check-in đến máy chủ MDM với UDID token và thiết bị (một trong đó Apple đang loại bỏ các API)
  2. thiết bị sẽ gửi thông tin thiết bị cho máy chủ MDM (Wifi MAC Addr, số sê-ri, phiên bản hệ điều hành và các thông tin khác)
  3. Sẽ có ứng dụng khách sẽ nói chuyện với máy chủ MDM qua RESTful API. (Trước đây tôi đã sử dụng UDID làm khóa nhận dạng)

Tôi đã nghĩ đến việc sử dụng Địa chỉ MAC nhưng trong iOS 7 mới nhất, hệ thống sẽ luôn trả về giá trị 02: 00: 00: 00: 00.

Chúng tôi cũng không thể nhận được số sê-ri của thiết bị.

Vì vậy, câu hỏi của tôi một lần nữa, làm thế nào chúng ta có thể biết ứng dụng này trên thiết bị này thuộc về đăng ký MDM này trên máy chủ trên (3). Bởi vì hiện tại, ứng dụng không có bất kỳ khóa chung nào để được giới thiệu với quy trình đăng ký. Máy chủ sẽ biết thiết bị nào là máy chủ nào?

Cảm ơn.

+0

Bạn đã tìm thấy giải pháp cho vấn đề của mình chưa? Của tôi khá giống nhau. – noircc

+0

Cách giải quyết duy nhất cho việc này là sử dụng identifierForVendor và lưu trữ nó trong Keychain để identifierForVendor sẽ vẫn còn ngay cả khi người dùng cài đặt lại Enterprise App. – adiman

+0

Bump for answer, tôi đang gặp vấn đề tương tự nhưng chưa tìm được giải pháp nào. – sm0ke21

Trả lời

5

Cách tốt nhất, và có lẽ là cách duy nhất, là sử dụng khả năng cấu hình Ứng dụng được quản lý mới trong iOS 7. Bạn có thể đặt MDM của bạn xuống dưới dạng khóa API cho ứng dụng của bạn. Sau đó, ứng dụng của bạn trình bày khóa đó trong cuộc gọi của bạn trở lại máy chủ MDM hoặc bất kỳ dịch vụ web nào khác.

Khi bạn đẩy cấu hình xuống ứng dụng của mình, bạn có thể kéo khóa API bằng thứ gì đó như dưới đây. Hầu hết các giải pháp MDM chính thống đã hỗ trợ loại chức năng này trong các phiên bản mới nhất của chúng.

NSDictionary *config = [[NSUserDefaults standardUserDefaults] dictionaryForKey:@"com.apple.configuration.managed"]; 
NSString *apiKey = config[@"kAPIKey"]; 

if (apiKey) { 
    //We got an API key and we can use it 
} else { 
    //We didn't get an API key...something has gone wrong 
} 
0

Tôi có thể đọc nguồn này mà tôi đã tìm thấy cách đây vài tháng; http://www.doubleencore.com/2013/04/unique-identifiers/

Từ đó tôi đã sử dụng phương pháp CFUUID đã phục vụ tốt cho tôi.

NSString *uniqueID = [NSString stringWithFormat:@"%@", CFUUIDCreateString(NULL, CFUUIDCreate(NULL))];

+1

vấn đề là, giao thức MDM không có yêu cầu tùy chọn cho CFUUID trong tải trọng. MDM chỉ gửi UDID và các phần cứng khác. Vì vậy, không thể liên kết CFUUID với những gì đã được gửi đến máy chủ MDM. – adiman

0

Trong iOS 7, Apple bây giờ luôn luôn trả về một giá trị cố định khi truy vấn MAC cụ thể ngăn chặn các MAC như là cơ sở cho một chương trình ID. Vì vậy, bây giờ bạn thực sự nên sử dụng - [UIDevice identifierForVendor] hoặc tạo UUID cho mỗi lần cài đặt.

+0

[UIDevice identifierForVendor] không khớp với thiết bị UDID bằng tải trọng MDM. Thats vấn đề – adiman

+0

Tôi cũng phải đối mặt với cùng một vấn đề trong ứng dụng của tôi. Cũng sẽ có một vấn đề xảy ra khi người dùng cập nhật hệ điều hành trong thiết bị của mình. – Developer

+0

Vì vậy, tôi nghĩ rằng tùy chọn tốt hơn là chúng tôi phải sử dụng Mã thông báo Thiết bị (nếu bạn đang sử dụng thông báo Đẩy) trong ứng dụng của chúng tôi. – Developer

0

[UIDevice uniqueIdentifier] đã được thay thế bằng [[UIDevice identifierForVendor] UUIDString] trong iOS 6.0.

2

Tuy nhiên câu trả lời lidsinker 's là đúng, hãy để tôi tập trung vào nó vì vậy một số người khác đang tìm kiếm điều này có thể được giúp đỡ.

Bạn có thể tạo ứng dụng Doanh nghiệp và có thể cài đặt ứng dụng qua MDM. Sau khi thiết bị được đăng ký, MDM có thể cài đặt ứng dụng Enterprise cho thiết bị. MDM cũng có thể đặt cấu hình mặc định trong NSUserDefault.

Ứng dụng có thể đọc nó bất cứ khi nào nó khởi chạy như trên được mô tả trong câu trả lời lidsinker.

Apple cung cấp ví dụ tại đây. https://developer.apple.com/library/content/samplecode/sc2279/Introduction/Intro.html

+0

cách tiếp cận này có thể đảm bảo rằng ứng dụng chỉ chạy trên các thiết bị đã đăng ký không? Giả sử ai đó có thể trích xuất ứng dụng từ một thiết bị đã đăng ký và cài đặt ứng dụng đó trên thiết bị chưa được đăng ký - điều đó có thể xảy ra không? –

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