[英]how to check whether application is installed or not in iOS device?
我正在做一個iOS應用程序。 在那,我有一個UITableView模塊。 在那個UITableView中,我顯示了一些應用程序名稱列表。 這些名字來自我的服務器。 這些是我的公司申請。 所以,我不知道有多少應用程序來自服務器。 一旦用戶點擊UITableViewCell,我需要檢查該設備上是否已經安裝了這些應用程序。 如果未安裝,用戶需要使用該應用的應用商店鏈接轉到appstore。 我查了一些教程。 他們說,使用網址方案,我們可以做到這一點。 但是,我沒有這些網址的網址方案,因為這些應用程序來自服務器。 另外,我嘗試了以下方法
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"itms://itunes.com/apps/nameOfMyApp"]];
[[UIApplication sharedApplication] canOpenURL:[NSURL URLWithString:@"nameOfMyAppOrurl:"]];
但沒有任何幫助我。 任何人都可以了解這個問題,如果是這樣,請提出寶貴的建議。
您需要為列表中的每個應用程序提供應用程序URL方案 ,沒有其他方法可以檢查是否已安裝該應用程序。
我猜你服務器的列表形式將是JSON,類似於:
{
"name" : "My Cool APP",
"scheme" :"mycoolapp:",
"itunes": "http:///...../"
}
然后做一些像:
if ([[UIApplication sharedApplication] canOpenURL:scheme]) {
[[UIApplication sharedApplication]openURL:scheme];
}
else {
[[UIApplication sharedApplication]openURL:itunesURL];
}
自定義網址方案是解決此問題的首選方法。 您必須知道所有需要檢查可用性的應用程序的所有URL方案(這意味着所有應用程序都應配置一個)。 對於您的特定情況,您將需要后端支持,即服務器應為每個應用程序提供方案(服務器也應該被告知方案)。
另一種選擇是在鑰匙串中使用共享數據,這里有一個關於通過鑰匙串在應用程序之間共享數據的答案 。 您應該為此考慮一個解決方案,但只要您可以在已知的應用程序組之間共享數據,您就可以在該技術之上實現某些功能。 請注意,第二個解決方案要求您擁有所有應用程序(或能夠影響其配置)。
您可以在服務器上注冊應用程序的自定義URL方案: https : //developer.apple.com/library/ios/documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/AdvancedAppTricks/AdvancedAppTricks.html#//apple_ref/doc/uid/TP40007072- CH7-SW50
如果您的應用程序有方案,您將能夠使用canOpenURL
方法。
您還可以將URL方案分配給公司的應用程序,並使用以下代碼檢查它們是否已安裝:
if ([[UIApplication sharedApplication] canOpenURL:[NSURL URLWithString:@"myAppURLScheme://"]])
{
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"myAppURLScheme://"]];
}
else
{
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Error" message:@"App not installed on Device" delegate:self cancelButtonTitle:@"OK" otherButtonTitles:@"Open link", nil];
[alert show];
}
另請查看此URL Scheme Tutorial
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.