Приложение не запоминает обращение к серверу и делает это повторно
Не понимаю в чем ошибка (Приложение не запоминает обращение к серверу и делает это повторно) При первом запуске происходит обращение на сервер Firebase, где я получаю ссылку на сайт. Далее я перехожу на этот сайт и снова получаю ссылку. И если все корректно сохраняю ее в pref. При запуске определяем сохранена ли ссылка(то есть корректная ли она) и запускаем google custom tab. Но мне говорят, что я повторно обращаюсь к серверу.
class LoadingActivity : AppCompatActivity() {
val APP_PREFERENCES = "FIRST_OPEN"
val save_link = "link"
val rediscovery = "rediscovery"
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_loading)
val pref:SharedPreferences = getSharedPreferences(APP_PREFERENCES, Context.MODE_PRIVATE)
var rediscoveryBool = pref.getBoolean(rediscovery,false)
var link = pref.getString(save_link,"")!!
val connectionDetector = ConnectionDetector(applicationContext).ConnectingToInternet()//check the Internet connection
if (!connectionDetector && !rediscoveryBool){
Log.d("debugApp", "no internet connection")
Intent(this@LoadingActivity, MainActivity::class.java).also {
startActivity(it)
}
}
if (rediscoveryBool){
actionWithLink(link)
}
else{
lifecycleScope.launch(Dispatchers.IO) {
if (connectionDetector) {
Log.d("debugApp", "internet connection correct")
if (!rediscoveryBool) {
Log.d("debugApp", "first open")
pref.edit().putBoolean(rediscovery, true).apply()
var domenFromFirebase = getLinkFromDb()
link = if (domenFromFirebase != "") {
getRequestToURL(makeURl(domenFromFirebase))
} else ""
pref.edit().putString(save_link, link).apply()
}
actionWithLink(link)
}
}
}
}
fun makeURl(domenFromFirebase: String): String { //корректирую ссылку полученную с firebase
Log.d("debugApp", "make url")
val packageName = BuildConfig.APPLICATION_ID
val timeZone: String = TimeZone.getDefault().id
val uuid = UUID.randomUUID().toString()
var url:String = "${domenFromFirebase}/?packageid=${packageName}&usserid=${uuid}&getz=${timeZone}&getr=utm_source=google-play&utm_medium=organic"
Log.d("debugApp",url)
return url
}
private suspend fun getLinkFromDb():String{
Log.d("debugApp", "getLinkFromDb")
val db = Firebase.firestore
var dblink:String = ""
db.collection("database")
.get()
.addOnSuccessListener { result ->
for (document in result) {
dblink = document.data.getValue("link").toString()
Log.d("debugApp",dblink)
}
}
.addOnFailureListener {
dblink = ""
}.await()
return dblink
}
fun actionWithLink(link:String){
Log.d("debugApp", "actionWithLink")
Log.d("debugApp", link)
if (link != "") {
intent = Intent(this@LoadingActivity, WebActivity::class.java)
intent.putExtra("urlStr",link)
startActivity(intent)
} else {
Log.d("debugApp", "uncorret link")
Intent(this@LoadingActivity, MainActivity::class.java).also {
startActivity(it)
}
}
}
override fun onBackPressed() {
// do nothing
}
private fun getRequestToURL(urlStr:String):String{
Log.d("debugApp", "getRequestToURL")
val url = URL(urlStr)
val urlConnection: HttpURLConnection = url.openConnection() as HttpURLConnection
return try {
val data = urlConnection.inputStream.bufferedReader().use { it.readText() }
data
} catch (e:Exception){
""
} finally {
urlConnection.disconnect()
}
}
}