3

Мне действительно нравится разработка приложений Ionic 2, но на данный момент у меня есть некоторые проблемы с процессом покупки.Как проверить подписку на запуск приложения?

Как проверить, когда приложение запускается, если у пользователя есть действительная покупка? я хочу достичь следующее поведение:

Пользователь имеет подписку: -> показать страницу A

Пользователь не имеет подписки: -> показать PAGE B

ли я сохранять информацию о подписке локально?

** редактировать **

И использования firebase бэкенда и могут хранить покупку там.

Это моя функция:

buyCoach(productName: string): void { 
    console.log(productName); 
    InAppPurchase 
     .getProducts([productName]) 
     .then((products) => { 
      InAppPurchase 
       .buy(productName) 
       .then((data)=> { 
        // { 
        // transactionId: ... 
        // receipt: ... 
        // signature: ... 
        // } 

        // maybe store somethign to firebase? But what? 
       }) 
       .catch((err)=> { 
        console.log("error buy"); 
        console.log(JSON.stringify(err)); 
       }); 
     }) 
     .catch((err) => { 
      console.log("error getProducts"); 
      console.log(JSON.stringify(err)); 
     }); 
} 

ответ

1

Вам нужно аутентификация и авторизация решение. Пользователь должен быть идентифицирован (аутентифицирован) каким-то образом. Вам не нужно внедрять свои, и вместо этого вы можете использовать Facebook, GooglePlus или Tweeter. Вы можете использовать службы Azure Mobile App, которые позволяют вашим пользователям входить в любой из этих трех.

Как только вы сделаете это, вы можете безопасно вызвать службу, которую вы разработали, скажем, службу профиля пользователя, которая сообщает вам, какие подписки у пользователя есть.

Вы можете хранить эту информацию локально, используя Ionic's Secure Storage плагин для выполнения целей

Для перехода на другую страницу, вы можете использовать NavController.push, чтобы перейти к страницам.

+1

Да. Информация пользователя и поэтому для входа в систему требуется регистрация для получения подписки пользователя. Сохранять ли эту информацию ** ТОЛЬКО ** локально - плохая идея. Храните его в базе данных, связанной с пользователем, поэтому, когда пользователь входит в систему с любой другой платформы/устройства, информация о подписке будет находиться в базе данных. 'nav.push (PageA)' должен быть достаточно простым. –

+0

Звучит неплохо, я уже использую firebase в своем ионном приложении 2 в качестве бэкэнд. Но как я могу проверить интервал или что-то еще, если у пользователя есть активная подписка? – Fargho

0

Я не знаю, если я получил свой вопрос прямо, но вы можете сделать следующее, чтобы проверить, если пользователь вошел в систему (неоспоримым по электронной почте, facebook, Google и т.д.) и в состоянии приобрести:

firebase.auth().onAuthStateChanged(function(user) { // CREATES AN OBSERVABLE TO WATCH IF THE USER CHANGES IT STATES, LIKE LOGOFF 
    if (user) { // 
    this.rootPage = Page_A; // THE USER IS LOGGED, SHOW PAGE A 
    } else { 
    this.rootPage = Page_B; // USER NOT LOGGED, PAGE B 
    } 
}); 

Если вы пытаетесь, чтобы узнать, имеет ли пользователь покупку он не закончил, когда он вышел из приложения, вы можете сделать следующее:

  • Сохранить идентификатор пользователя на вас LocalStorage/SQLite.
  • Если у пользователя нет учетной записи (если вы хотите, чтобы они покупали без регистрации), используйте метод firebase .push() с информацией о тележке, он будет генерировать случайный ключ, который вы можете захватить в возврате promisse, используя .then() ,
  • В вашей корневой странице (как A, так и B) есть метод ionViewWillLeave(), который сохраняет текущую корзину покупок в его узле firebase (используя сохраненный uid).
  • На приложении открыть вы получаете магазин тележку с firebase, если он существует, и itens (предпочитает делать это на корневой странице с ionViewDidLoad() или что-то вроде этого, на app.component «s deviceReady() это может замедлить ваше приложение немного позже)
  • После выхода приложения, если корзина магазина пуста, удалите узел корзины магазина из базы данных, если нет, переопределите сохраненную корзину.

Попробуйте базу данных, как:

/Users 
|_ User_uid 
    |_ User_Info_Node 
    | |_ USER_NAME //AND CITY, PHONE, ETC. 
    |_ CART 
     |_ CART_ITEM1_ID 
     |_ CART_ITEM2_ID 
     |_ CART_ITEM3_ID 
Смежные вопросы