Как вы обрабатываете автоматически возобновляемые подписки в приложениях, у которых есть система учетных записей сторонних производителей? - PullRequest
0 голосов
/ 05 августа 2020

Я работаю над приложением, которое предоставляет пользователям возможность входить и выходить, используя учетные записи в моем сервисе. Я также хочу предоставить пользователям возможность приобретать автоматически возобновляемые подписки.

Я не могу понять, как разрешить пользователям входить и выходить с использованием учетных записей в моем сервисе и приобретать автоматически возобновляемые подписки, потому что Покупки StoreKit привязаны к Apple ID устройства и не могут быть привязаны к учетным записям в моей системе.

Например, предположим:

  • У человека есть iPhone и вошел в систему iOS на этом устройстве, используя свой Apple ID: bob@icloud.com
  • Этот человек загружает мое приложение и создает userA в моей учетной записи.
  • Как userA , они покупают автоматически возобновляемую подписку. Эта покупка сохраняется в квитанции StoreKit для пользователя bob@icloud.com.
  • Без изменения идентификаторов Apple ID человек выходит из моего приложения и создает userB в моей системе.
  • Человек пытается купите такую ​​же автоматически возобновляемую подписку за userB. Когда они это делают, ничего не происходит. В частности, этот код :
SKMutablePayment *payment = [SKMutablePayment paymentWithProduct:[self.products objectForKey:identifier]];
//...
[[SKPaymentQueue defaultQueue] addPayment:payment];

не предлагает userB купить, потому что, что касается StoreKit, они уже владеют им, потому что они все еще bob@icloud.com на устройстве.

Даже если я храню информацию о подписке на своих серверах (что я и делаю), я не уверен, как я могу исправить ситуацию, кроме разрешения только входа Apple на iOS версия моего приложения. Это потому, что Apple Sign In строго привязан к текущему Apple ID на устройстве.

Действительно ли это единственный способ привлечь пользователей в приложение, которое также имеет Автоматически возобновляемые подписки IAP? Я искал в Интернете , и похоже, что это так.

1 Ответ

1 голос
/ 06 августа 2020

ЕСЛИ Я понимаю , вы хотите сделать следующее:

• В ВАШЕЙ системе ДВА пользователя, A и B

• на самом деле A и B - одно и то же лицо. (Назовите ее «Джейн».)

• на самом деле у Джейн (очевидно) то же iPhone, независимо от того, ваша-система-A или ваша-система-B. Давайте назовем этот iPhone как iPhone 7778636728637

• вы предлагаете подписку под названием «дракон-яйца-возобновляемый»

Итак:

Когда 7778636728637 хочет купите «возобновляемые яйца дракона»,

вы хотите иметь возможность продать ее

• «возобновляемые яйца дракона» за A

И продайте ее

• «возобновляемые яйца-драконы» для B

Это совершенно невозможно.

Подписка «возобновляемые яйца-драконы» распространяется только по телефону.

Вход в систему с Apple не связан.

Подписки go по телефону и все.

Но есть способ обойти это:

Уловка есть. Скажем, три названные подписки,

  • «дракон-яйца-возобновляемый»
  • «дракон-яйца-возобновляемый-supp1»
  • «дракон-яйца-возобновляемый-супп2»

В вашей системе, если они являются пользователем А, продайте им «драконьи-яйца-возобновляемые».

Однако , если вы поймете, что это пользователь B, продайте им «дракон-яйца-возобновляемый-supp1»

Вы понимаете, о чем я?

Это совсем не необычно продавать более одной подписки. (Пример "powerup1" ... "powerup2" ... et c)

Надеюсь, это сработает, и надеюсь, что я понял!

Может быть, я неправильно понял?

Подписки Apple невероятно сложны и требуют огромного количества серверного кода.

(Кроме того, я даже не думал о проблемах, поднятых Sign-on-with-Apple в отношении подписок.)

Так что, если у кого-то есть что добавить в другие ответы, отлично!

Примечание! OP, если вы обнаружили, что использование Sign-on-with-Apple «обходит» эту классическую / basi c проблему подписок, отлично!

...