如何使用Expo inApp购买

时间:2020-08-12 20:21:26

标签: android react-native in-app-purchase expo

我正在制作一个多平台应用程序,起初它是在expo中制作的,但是后来我不得不使用expoKit运行它,现在我尝试实现inAppPurchases,但是我却无法做到,我已经完成了文档首先指出的内容使用connectAsync函数,该函数应该给我一个结果,但它只会返回以下内容:

enter image description here

这是我使用它的代码

import React, {useState, useEffect, useContext} from 'react'
import { StyleSheet, Text, View, ScrollView, Image, TouchableOpacity, Platform,Alert  } from 'react-native'
import { AntDesign } from '@expo/vector-icons'; 
import { MaterialCommunityIcons } from '@expo/vector-icons'; 
import { FontAwesome5 } from '@expo/vector-icons'; 
import AsyncStorage from '@react-native-community/async-storage';
import Config from '../config'
import * as InAppPurchases from 'expo-in-app-purchases';

import { AuthContext } from '../components/context'

const itemSkus = Platform.select({
    ios: [
      '1000_monedas',
      '2000_monedas' 
    ],
    android: [
        '1000_monedas',
        '2000_monedas' 
    ]
  });


export default function MyProfile() {



    const [userInfo, setUserInfo] = useState(null);

    const { signOut } = useContext(AuthContext);

    useEffect(() => {
        fetchUserData()
    },[])

    useEffect(() => {
        initializeInAppPurchase()
        // fetchProductsData()
    },[])

    const fetchUserData = async() => {
        try {
            const userData = await AsyncStorage.getItem('userData')
            const dataUser = JSON.parse(userData)
            setUserInfo(dataUser)
          } catch (error) {
            console.log(error)
          }
    }

    const fetchProductsData = async () => {
        const { responseCode, results } = await InAppPurchases.getProductsAsync(itemSkus);
        if (responseCode === InAppPurchases.IAPResponseCode.OK) {
            console.log("result",results)
            console.log("responseCode",responseCode)
        }
    }

    const initializeInAppPurchase = async() => {
        const history = await InAppPurchases.connectAsync();
        console.log("history", history)
        if (history.responseCode === InAppPurchases.IAPResponseCode.OK) {
        history.results.forEach(result => {
            // Restore history if needed
            console.log(result)
        });
        }
    }



    const onAddCoins = () => {
        
    }
    
    return(
        <ScrollView>
            <View style={[styles.containerUser]}>
                <Image 
                    resizeMode="contain" 
                    style={styles.imageMain} 
                    source={require('../assets/backgrounds/perfil2.jpg')} 
                />
                <View style={styles.hoverBack}>
                    <View style={styles.containerImage}>
                        <Image 
                            resizeMode="cover" 
                            style={styles.profileImage} 
                            source={{uri: Config.urlBackEnd + '//profileImages/' + userInfo?.profile_image}} 
                        />
                    </View>
                    <Text style={styles.textWhite}>{userInfo?.name}</Text>
                    <Text style={styles.textWhite}>{userInfo?.email}</Text>
                    <Text style={styles.textWhite}>Tipo de Usuario: {userInfo?.typeOfUser == "teacher" ? "Profesor" : userInfo?.typeOfUser == "user" ? "Usuario Normal" : "Administrador"}</Text>
                    <View style={[styles.containerWallet, styles.shadow]}>
                        <View style={styles.TrapezoidStyle}>
                            <FontAwesome5 style={styles.iconCoin} name="coins" size={20} color="#efb810" />
                        </View>
                        <View style={styles.coinText}>
                            <Text style={styles.textMoney}>1000</Text>
                        </View>
                    </View>
                </View>
            </View>
            <View style={styles.containerOptions}>
                <View style={styles.eachOption}>
                    <AntDesign style={styles.icon} name="edit" size={25} color="#526065" />
                    <Text style={styles.textEach}>Editar mi Perfil</Text>
                </View>
                <View style={styles.eachOption}>
                    <MaterialCommunityIcons name="textbox-password" style={styles.icon} size={25} color="#526065" />
                    <Text style={styles.textEach}>Cambiar la Contraseña</Text>
                </View>
                <TouchableOpacity onPress={onAddCoins}>
                    <View style={styles.eachOption}>
                        <MaterialCommunityIcons name="textbox-password" style={styles.icon} size={25} color="#526065" />
                        <Text style={styles.textEach}>Añadir Monedas</Text>
                    </View>
                </TouchableOpacity>
                <View style={styles.eachOption}>
                    <AntDesign name="delete" style={styles.icon} size={25} color="#526065" />
                    <Text style={styles.textEach}>Eliminar Cuenta</Text>
                </View>

                <TouchableOpacity onPress={signOut}>
                    <View style={styles.eachOption}>
                        <AntDesign name="logout" style={styles.icon} size={25} color="#526065" />
                        <Text style={styles.textEach}>Cerrar Sesion</Text>
                    </View>
                </TouchableOpacity>
            </View>
        </ScrollView>
    )
}

0 个答案:

没有答案