如何让我的应用程序记住kotlin中奖励视频广告赚取的硬币数?
当我关闭应用程序时,文本视图中的数字返回到0 我尝试使用几种不同的共享首选项,但都不起作用。我有另一个应用程序,是一个提醒应用程序,它在那里工作 对于此应用程序,已赢取1枚硬币,但单击奖励的应用程序。 这些硬币怎么能被保存?我的代码如下:如何让我的应用程序记住kotlin中奖励视频广告赚取的硬币数?,kotlin,sharedpreferences,reward,Kotlin,Sharedpreferences,Reward,当我关闭应用程序时,文本视图中的数字返回到0 我尝试使用几种不同的共享首选项,但都不起作用。我有另一个应用程序,是一个提醒应用程序,它在那里工作 对于此应用程序,已赢取1枚硬币,但单击奖励的应用程序。 这些硬币怎么能被保存?我的代码如下: private val TAG = "MainActivity" private var totalCoins = 0 private var adLoadProgress = 0 private lateinit var mAdView
private val TAG = "MainActivity"
private var totalCoins = 0
private var adLoadProgress = 0
private lateinit var mAdView : AdView
private lateinit var rewardedAd: RewardedAd
private lateinit var mInterstitialAd: InterstitialAd
private lateinit var sharedPref: SharedPreferences
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
MobileAds.initialize(this)
bannerAd()
rewardedAd()
interstitialAd()
}
private fun adsLoadedProgress() {
++adLoadProgress
if (adLoadProgress == 3) {
Toast.makeText(this, "All ads are loaded", Toast.LENGTH_SHORT).show()
}
}
private fun interstitialAd() {
fun nextActivity() {
val i = Intent(this, InformationActivity::class.java)
startActivity(i)
}
mInterstitialAd = InterstitialAd(this)
mInterstitialAd.adUnitId = "ca-app-pub-3940256099942544/1033173712"
mInterstitialAd.loadAd(AdRequest.Builder().build())
button2.setOnClickListener {
if (mInterstitialAd.isLoaded) {
mInterstitialAd.show()
} else {
Log.d("TAG", "The interstitial wasn't loaded yet.")
}
}
mInterstitialAd.adListener = object: AdListener() {
override fun onAdLoaded() {
// Code to be executed when an ad finishes loading.
Log.d("TAG", "Interstitial ad loaded")
adsLoadedProgress()
}
override fun onAdFailedToLoad(errorCode: Int) {
// Code to be executed when an ad request fails.
Log.d("TAG", "Interstitial ad failed to load")
}
override fun onAdOpened() {
// Code to be executed when the ad is displayed.
Log.d("TAG", "Interstitial ad opened")
}
override fun onAdClicked() {
// Code to be executed when the user clicks on an ad.
Log.d("TAG", "Interstitial ad clicked")
}
override fun onAdLeftApplication() {
// Code to be executed when the user has left the app.
Log.d("TAG", "User left app on interstitial ad")
}
override fun onAdClosed() {
// Code to be executed when the interstitial ad is closed.
Log.d("TAG", "Interstitial ad closed")
mInterstitialAd.loadAd(AdRequest.Builder().build())
nextActivity()
}
}
}
private fun bannerAd() {
mAdView = findViewById(R.id.adView)
val adRequest = AdRequest.Builder().build()
mAdView.loadAd(adRequest)
mAdView.adListener = object: AdListener() {
override fun onAdLoaded() {
// Code to be executed when an ad finishes loading.
Log.d(TAG,"Ad loaded")
adsLoadedProgress()
}
override fun onAdFailedToLoad(errorCode : Int) {
// Code to be executed when an ad request fails.
Log.d(TAG,"Ad failed to load")
}
override fun onAdOpened() {
// Code to be executed when an ad opens an overlay that
// covers the screen.
Log.d(TAG,"Ad opened")
}
override fun onAdClicked() {
// Code to be executed when the user clicks on an ad.
Log.d(TAG,"Ad clicked")
}
override fun onAdLeftApplication() {
// Code to be executed when the user has left the app.
Log.d(TAG,"User left app on ad")
}
override fun onAdClosed() {
// Code to be executed when the user is about to return
// to the app after tapping on an ad.
Log.d(TAG,"Ad closed")
}
}
}
private fun rewardedAd() {
fun createAndLoadRewardedAd(): RewardedAd {
rewardedAd = RewardedAd(this, "ca-app-pub-3940256099942544/5224354917")
val adLoadCallback = object: RewardedAdLoadCallback() {
override fun onRewardedAdLoaded() {
// Ad successfully loaded.
Log.d(TAG,"Rewarded Ad loaded")
adsLoadedProgress()
}
override fun onRewardedAdFailedToLoad(errorCode: Int) {
// Ad failed to load.
Log.d(TAG,"Rewarded Ad failed to load")
}
}
rewardedAd.loadAd(AdRequest.Builder().build(), adLoadCallback)
return rewardedAd
}
fun onRewardedAdClosed() {
this.rewardedAd = createAndLoadRewardedAd()
}
createAndLoadRewardedAd()
button.setOnClickListener {
Log.d(TAG,"Button clicked")
if (rewardedAd.isLoaded) {
val activityContext: Activity = this@MainActivity
val adCallback = object: RewardedAdCallback() {
override fun onRewardedAdOpened() {
// Ad opened.
Log.d(TAG,"Rewarded Ad opened")
}
override fun onRewardedAdClosed() {
// Ad closed.
Log.d(TAG,"Rewarded Ad closed")
onRewardedAdClosed()
}
override fun onUserEarnedReward(@NonNull reward: RewardItem) {
// User earned reward.
Log.d(TAG,"Reward earned successfully")
totalCoins+=1
tv_total_coins.text = "Total coins: $totalCoins "
Toast.makeText(applicationContext, "1 coin earned", Toast.LENGTH_SHORT).show()
}
override fun onRewardedAdFailedToShow(errorCode: Int) {
Log.d(TAG,"Rewarded Ad failed to show")
// Ad failed to display.
}
}
rewardedAd.show(activityContext, adCallback)
}
else {
Log.d("TAG", "The rewarded ad wasn't loaded yet.")
}
}
}
标准的Java方式是使用。您只需告诉API要存储什么,它就会使用您平台上合适的任何东西(例如注册表、plist文件或XML文件)来持久化它。