我可以检查用户安装了哪些 iOS 个应用程序以及在应用程序中购买了什么?

Can i check what iOS apps a user has installed and what in app purchases?

我已经发布了我的第一个 iOS 应用程序,我正在开发另一个应用程序。我希望能够免费向通过第一个应用内的应用内购买升级的用户提供新的应用内购买。有没有办法查看用户购买另一个应用程序的应用程序?如果没有,我可以这样做,以便安装我的第一个应用程序的任何人都可以免费升级第二个应用程序吗?

检查应用程序 - 有点。

对于您自己的应用,您可以使用 Custom URL scheme 检查 App1 是否是从 App2 中安装的。一些主要应用程序(如 Facebook、YouTube 等)也有此功能,因此您可以查看是否也安装了这些应用程序。

但是,如果您正在寻找不支持此系统的应用程序,那您就不走运了。

正在检查应用内购买 - 否

至于检查用户是否在另一个应用内进行了应用内购买,不,该信息不可用。

唯一的例外是,如果您制作了这两个应用程序,并且您在服务器上存储了购买记录,或者将应用程序设计为在购买时相互通知。然后,您可以让 App1 检查服务器(或共享记录)以确定 App2 是否已购买。

你的场景

至于你说的场景,有App1(你做的)的用户可以在App2(你做的)里面免费升级,有点复杂,但肯定是可行的。

基本上,您需要为每个添加自定义 URL 方案。这将允许 App2 查看是否安装了 App1。然后,在 App2 中你会有这样的逻辑......

BOOL userHasInstalledAppOne = [/*here's where you check for the URL scheme*/];
if(userHasInstalledAppOne) {
    // Show "upgrade for free!" button
} else {
    // Show "purchase upgrade" button
}

你无法知道应用内购买,但你可以发现用户是否安装了其他应用,但可能你需要先更新此应用并添加关注 属性 到 info.plist

<array>
    <dict>
        <key>CFBundleURLSchemes</key>
        <array>
            <string>firstApp</string>
        </array>
    </dict>
</array>

然后在新应用程序中,您只需检查

var isInstalled = false
if let url = NSURL(string: "firstApp://"){
            isInstalled = UIApplication.sharedApplication().canOpenURL(url)
        }

并将其添加到 info.plist

<key>LSApplicationQueriesSchemes</key>
<array>
    <string>firstApp</string>
</array>