使用 StoreKit 检测应用安装

Posted

技术标签:

【中文标题】使用 StoreKit 检测应用安装【英文标题】:Detect app installation with StoreKit 【发布时间】:2013-07-03 17:57:30 【问题描述】:

ios6 引入了 StoreKit 框架,该框架被指定用于从应用程序内部与 AppStore 进行交互。 我很容易将用户引导到一个特定的应用程序,问题是我如何检测用户是否实际安装了我将他重定向到的应用程序?

【问题讨论】:

你的意思是来自不同的应用程序吗? 是的。与 Facebook 应用宣传不同应用的方式相同 ***.com/questions/7226406/…的可能重复 【参考方案1】:

这通常通过在UIAplication 对象上调用-canOpenURL: 来完成,如下所示:

NSURL *appURL = [NSURL URLWithString:@"fb:"];
BOOL appInstalled = [[UIApplication sharedApplication] canOpenURL:appURL];

但是您需要知道第二个应用程序打开什么 URL 方案。由应用开发者在 Info.plist 文件中声明。

【讨论】:

这不是很有帮助,我会解释为什么 - 安装应用程序后(使用 SKStoreProductViewController),委托被调用(在应用程序实际完成安装过程之前)。所以对“canOpenURL”的调用发生得太快,因此返回 false。 您的论点无效。该代码有效。它检测是否安装了应用程序。如果应用程序尚未安装(尚未),则返回 false。我不知道有什么其他方法可以检测到这一点。只需检查多次或每 5 秒使用一次计时器。【参考方案2】:

有一个名为“iHasApp”的开源框架可以检测已安装的应用程序。 Git 存储库:iHasApp

【讨论】:

我看了下,iHasApp 不工作。它是“一些”并非所有应用程序的预列表。看到这个答案***.com/questions/17152049/… 您无法获得所有应用程序的列表!这样做没有非私有 API。

以上是关于使用 StoreKit 检测应用安装的主要内容,如果未能解决你的问题,请参考以下文章

是否可以在静态库中使用 StoreKit(应用内购买)?

检测应用程序是不是从华为应用市场安装

Android:检测何时安装应用程序

StoreKit 框架 - 更改 iTunes 商店以进行应用内购买时未调用回调

如何找出用户第一次购买/安装应用程序的时间(可能没有 UDID?)

触控 ID 未显示 StoreKit