2014-10-31 15 views
9

Làm thế nào để tôi tìm thấy lược đồ của một ứng dụng khác và liên kết sâu đến ứng dụng đó từ ứng dụng iOS của riêng tôi?Mở ứng dụng TestFlight từ một ứng dụng khác và liên kết sâu đến ứng dụng cụ thể

Cụ thể hơn, tôi muốn liên kết sâu đến ứng dụng Testflight theo các điều kiện nhất định (được đặt bởi mã của tôi). Tôi giả định rằng người đó đã cài đặt Testflight (có thể là một giả định tồi tệ nhưng chúng ta có thể sống với giả định đó).

Tôi biết rằng trên Android, bạn có thể truy vấn ứng dụng và gửi ý định liên kết sâu đến ứng dụng của người khác. Điều gì sẽ là tương đương trên iOS?

+0

Có không phải là một. Bạn đang sandboxed. – matt

Trả lời

4

Hầu hết các ứng dụng tích hợp của Apple cung cấp phản hồi cho các lược đồ URL tùy chỉnh; ví dụ: các ứng dụng Bản đồ, Thư, YouTube, iTunes và App Store đều sẽ mở để phản hồi các URL tùy chỉnh. Tuy nhiên, cũng có nhiều ứng dụng của bên thứ ba được thiết lập với các lược đồ URL được xuất bản mà bạn có thể sử dụng trong ứng dụng của riêng bạn. Bạn có thể tìm kiếm các chương trình ứng dụng trên

  1. http://handleopenurl.com/

  2. http://wiki.akosma.com/IPhone_URL_Schemes - cả hai đều có một danh sách lớn của chương trình URL

Khi bạn đã nhận thức truy cập URL tùy chỉnh sau đó bạn có thể liên kết sâu đến ứng dụng đó sử dụng cùng một lược đồ,

NSURL *customAppURL = [NSURL URLWithString:@"urlscheme://"]; 
//Eg: NSURL *whatsappURL = [NSURL URLWithString:@"whatsapp://send?text=Hello%20World!"]; 
if ([[UIApplication sharedApplication] canOpenURL:whatsAppURL]) { 
    [[UIApplication sharedApplication] openURL:whatsAppURL]]]; 
} 
+9

Đây là thông tin tốt nhưng nó không cố gắng trả lời câu hỏi đó là về lược đồ URL tùy chỉnh cho ứng dụng TestFlight. – rmaddy

5

Từ khi nhìn vào plist lược đồ URL cho TestFlight là "itms-beta: //" Tôi không thể quản lý để có được nó sâu liên kết được nêu ra, tôi đã cố gắng vượt qua nó Apple ID, có và không có một? cùng với tiền tố nó với appleid = Tôi sẽ thử gói ID tiếp theo.

Để mở ứng dụng TestFlight trên thiết bị sử dụng mà bạn có thể sử dụng:

NSURL *customAppURL = [NSURL URLWithString:@"itms-beta://"]; 
if ([[UIApplication sharedApplication] canOpenURL:customAppURL]) { 
    [[UIApplication sharedApplication] openURL:customAppURL]; 
} 
19

Có hai điều bạn cần phải làm. Trước tiên, hãy kiểm tra xem liệu TestFlight có được cài đặt hay không. Sau đó, tạo liên kết mới cho ứng dụng của bạn.

NSURL *customAppURL = [NSURL URLWithString:@"itms-beta://"]; 
if ([[UIApplication sharedApplication] canOpenURL:customAppURL]) { 

    // TestFlight is installed 

    // Special link that includes the app's Apple ID 
    customAppURL = [NSURL URLWithString:@"https://beta.itunes.apple.com/v1/app/978489855"]; 
    [[UIApplication sharedApplication] openURL:customAppURL]; 
} 

URL đặc biệt https://beta.itunes.apple.com này sẽ được mở trực tiếp trong TestFlight.

Cuối cùng, nếu bạn đang sử dụng iOS 9 (hoặc phiên bản cao hơn), bạn cần phải bổ sung vào Info.plist để có phương thức canOpenURL: hoạt động.

Nếu ứng dụng của bạn được liên kết trên hoặc sau iOS 9.0, bạn phải khai báo URL lược đồ bạn muốn chuyển cho phương pháp này. Thực hiện việc này bằng cách sử dụng mảng LSApplicationQueriesSchemes trong tệp Info.plist của dự án Xcode của bạn. Đối với mỗi lược đồ URL bạn muốn ứng dụng của mình sử dụng với phương pháp này, hãy thêm nó làm chuỗi trong mảng này.

<key>LSApplicationQueriesSchemes</key> 
<array> 
    <string>itms-beta</string> 
</array> 
+1

làm cách nào để tôi có được customAppURL? ứng dụng của tôi được tải lên testFlight nhưng tôi không thể tìm cách nhận url. – Paragon

+3

Chỉ là 'https: // beta.itunes.apple.com/v1/app /' theo sau là id ứng dụng. Lưu ý rằng đây không phải là tài liệu bất cứ nơi nào và có thể có thể thay đổi bất cứ lúc nào. – picciano

+0

Thao tác này sẽ mở ra Testflight và hiển thị biểu tượng ứng dụng beta của chúng tôi (có liên kết mở), tuy nhiên làm cách nào để có thể mở Ứng dụng beta trực tiếp từ liên kết? –

0

Một cách khác để gọi một trong hai ứng dụng này hay cách khác:.

- (IBAction)go:(id)sender { 
    NSString *cnnAppURL = @"cnn://"; 
    NSString *mapsAppURL = @"maps://"; 

    BOOL canOpenURL = [[UIApplication sharedApplication] canOpenURL:[NSURL URLWithString:cnnAppURL]]; 

    NSString *url = canOpenURL ? cnnAppURL : mapsAppURL; 
    [[UIApplication sharedApplication] openURL:[NSURL URLWithString:url]]; 


} 

Xin vui lòng đọc "UseYourLoaf's bài viết trên blog gần đây về việc sử dụng URLschemes với canOpenURL này liên quan đến vấn đề an ninh mới và giải pháp.

"Điều này rất hữu ích nhưng các nhà phát triển bao gồm Twitter và Facebook đã sử dụng cơ chế này để khám phá danh sách Ứng dụng được cài đặt trên thiết bị để họ có thể phân phối" nội dung phù hợp ". Nếu bạn xây dựng và liên kết với iOS 9 SDK, bạn cần lập danh sách trắng các lược đồ mà ứng dụng của bạn sẽ truy vấn. Điều quan trọng cần hiểu là chính sách này cũng có thể ảnh hưởng đến các ứng dụng cũ hơn mà chưa được xây dựng lại với SDK iOS 9. "

Vui lòng đọc this link về các vấn đề liên quan đến thời điểm cuối cùng canOpenURL chức năng

đọc @ Picciano của - điều này sẽ không làm việc mà không sửa đổi plist của ứng dụng.

0

Swift 3/4 câu trả lời:

if let customAppURL = URL(string: "itms-beta://"){ 
    if(UIApplication.shared.canOpenURL(customAppURL)){ 
     UIApplication.shared.open(customAppURL, options: [:], completionHandler: nil) 
    } 
} 
Các vấn đề liên quan