管理Play Store订阅的链接

37
6个回答

51

我使用Action View打开Google Play商店 -> 账户。

    private fun openPlaystoreAccount() {
        try {
            startActivity(Intent(Intent.ACTION_VIEW, Uri.parse("https://play.google.com/store/account?utm_source=google&utm_medium=account&utm_campaign=my-account")));
        } catch (e: ActivityNotFoundException) {
            showToast("Cant open the browser")
            e.printStackTrace()
        } 
    }

更新:

谷歌发布了一种新的深层链接,它可以直接将用户带到您的应用程序管理订阅页面。您需要两个东西SKU和您的应用程序包名称。

示例URL:

https://play.google.com/store/account/subscriptions?sku=yoursku&package=com.yourpackagename

Kotlin示例代码:

 private val packageName = "com.mydomain.myapp"
 private val sku = "mySku"

 private fun openPlaystoreAccount() {
     try {
         startActivity(Intent(Intent.ACTION_VIEW, Uri.parse("https://play.google.com/store/account/subscriptions?sku=$sku&package=$packageName")))
     } catch (e: ActivityNotFoundException) {
         showToast("Cant open the browser")
         e.printStackTrace()
     }
 }

5
如果有多种订阅选项的SKU,您应该如何指导用户?是否有一个更普遍的链接? - Jake Cronin
有没有方法可以知道用户是否成功取消订阅所述的深链接意图?用户从深度链接执行的操作是否有任何返回结果? - aLL
1
由于某些原因,这个特定的深度链接在最近的Play Store版本中似乎不再起作用了。 - ubuntudroid
Google的文档链接:https://developer.android.com/google/play/billing/subscriptions#deep-link - ProjectDelta

18

为了方便测试,可以通过以下adb命令在命令行中启动此URL:adb shell am start -a "android.intent.action.VIEW" -d https://play.google.com/store/account/subscriptions - undefined

4
现在用户可以在App Store页面上查看他们的订阅。

https://developer.android.com/google/play/billing/subscriptions#deep-link

“用户购买订阅后,可以从Play Store应用程序的“我的应用”屏幕或应用程序在Play Store应用程序中的产品详细信息页面查看订阅并取消订阅。” < p >< code > market://details?id = YOUR_APP_ID < / code > < / p >

4

从今年的IO开始,可以使用深度链接来链接到您的订阅:

https://play.google.com/store/account/subscriptions?sku=*yoursku*&package=*com.yourpackagename*

只需使用普通意图打开此URL即可。


4

更详细的解释 -

1)用户已经拥有订阅

在这种情况下,当您调用 billingClient.queryPurchases() 时,它会返回一个 PurchaseResult。其中包含详细信息,例如 purchaseTokensku 以及 packagename。每次应用程序启动或 MainActivity 被恢复时都会进行此调用,因为如果有人离线购买您的 IAP,则您还需要对购买进行 acknowledge(有关详细信息请参见 此处)。

这意味着您也可以让用户“管理”订阅,因此可以使用深度链接链接到:

https://play.google.com/store/account/subscriptions?sku=skuName&package=packageName

2) 用户即将购买订阅:

购买订阅的方法是捕获您在Play控制台中创建的SUBS IAP的productIdSku。然后,您需要构建flowParams,然后才能调用。

val flowParams = BillingFlowParams.newBuilder()
            .setSkuDetails(skuDetails)
            .build()

billingClient.launchBillingFlow(activity, flowParams)

如果成功,您将返回两个东西:BillingResultMutableList<Purchase>。如果BillingResultOK且返回的列表不为空,则购买成功。此对象还具有skupackageName,因此您可以像上面一样遵循相同的深链接让用户Manage他们的订阅。
3) 用户已取消订阅,但其订阅已过期,但仍在任何“Resubscribe”期间条件之内here
这时您需要显示此深链接:https://play.google.com/store/account/subscriptions,以便他们可以恢复或重新订阅之前的Sku
备注:需要注意的一点是Play Store应用程序支持多个用户。因此,只有当Play Store应用程序选择了正确的用户时,深链接才有效。

Tap on the letter avatar on the top right to change accounts


1

所以这就是我直接链接到订阅的方法:

val context = LocalContext.current
val packageName =  context.applicationContext.packageName
val subscription_id = "Your subcription ID"
val PLAY_STORE_SUBSCRIPTION_DEEPLINK_URL = "https://play.google.com/store/account/subscriptions?product=%s&package=%s"
val url = String.format(PLAY_STORE_SUBSCRIPTION_DEEPLINK_URL,
        subscription_id, packageName);

  • 您可以在Google Play控制台的Monetization -> Subscriptions下找到您的subscription_id

Jetpack Compose代码:

@Composable
fun MyButton(url:String) {
    val uriHandler = LocalUriHandler.current
    Button(onClick = { uriHandler.openUri(url) }){
        Text("Subscriptions")
    }
}


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接