আইওএস অ্যাপটি ব্যাকগ্রাউন্ডে রয়েছে কিনা তা পরীক্ষা করার কোনও উপায় আছে কি?


186

অ্যাপটি ব্যাকগ্রাউন্ডে চলছে কিনা তা আমি খতিয়ে দেখতে চাই।

ভিতরে:

locationManagerDidUpdateLocation {
    if(app is runing in background){
        do this
    }
}

আপনি কি locationManager:didUpdateToLocation:fromLocation:পদ্ধতি সম্পর্কে কথা বলছেন ?
কালো ব্যাঙ

উত্তর:


285

অ্যাপের প্রতিনিধি কলব্যাক পান যা রাষ্ট্রের রূপান্তরগুলি নির্দেশ করে। আপনি এটির উপর ভিত্তি করে এটি ট্র্যাক করতে পারেন।

এছাড়াও ইউআইএ অ্যাপ্লিকেশনটিতে অ্যাপ্লিকেশন স্টেটের বর্তমান বর্তমান অবস্থা প্রদান করে।

[[UIApplication sharedApplication] applicationState]

64
আপনাকে ধন্যবাদ - এবং অতিরিক্ত স্পষ্টতার জন্য এটি [[ইউআইএএপ্লিকেশন শেয়ারড অ্যাপ্লিকেশন] অ্যাপ্লিকেশন স্টেট] == ইউআইএপ্লিকেশন স্টেটব্যাকগ্রাউন্ড।
পডস্টারপসন

39
আমি মনে করি [[UIApplication sharedApplication] applicationState] != UIApplicationStateActiveআরও ভাল, ইউআইএপ্লিকেশন স্টেটআইএনএটিভটি প্রায় পটভূমিতে থাকার সমতুল্য ...
জেপি ইলানস


2
আমি খুঁজে পেয়েছি যে যদি আপনার অ্যাপ্লিকেশনটিকে পটভূমিতে আনার উদ্দেশ্যে জীবিত করে তোলা হয় তবে রূপান্তর কলব্যাকগুলি কল হয় না called
মাইক Asdf

175
UIApplicationState state = [[UIApplication sharedApplication] applicationState];
if (state == UIApplicationStateBackground || state == UIApplicationStateInactive)
{
   //Do checking here.
}

এটি আপনার সমস্যা সমাধানে আপনাকে সহায়তা করতে পারে।

নীচে মন্তব্য দেখুন - নিষ্ক্রিয় একটি মোটামুটি বিশেষ ক্ষেত্রে, এবং এর অর্থ এই হতে পারে যে অ্যাপ্লিকেশনটি অগ্রভূমিতে চালু হওয়ার প্রক্রিয়াধীন রয়েছে। এটি আপনার লক্ষের উপর নির্ভর করে আপনার কাছে "ব্যাকগ্রাউন্ড" অর্থ হতে পারে বা নাও পারে ...


ভাল, সহায়ক উত্তর। কাজ করেছেন
সরঞ্জিত

1
দস্তাবেজগুলি থেকে: ইউআইএপ্লিকেশন স্টেটআইএনএটিভ - অ্যাপটি অগ্রভাগে চলছে তবে ইভেন্টগুলি পাচ্ছে না। কোনও বাধার ফলে বা অ্যাপ্লিকেশনটি ব্যাকগ্রাউন্ডে বা থেকে স্থানান্তরিত হওয়ায় এটি ঘটতে পারে।
অ্যান্ডি ওয়াইনস্টাইন

30

সুইফট 3

    let state = UIApplication.shared.applicationState
    if state == .background {
        print("App in Background")
    }

বিপরীতটিও কি সত্য? আমি কি পরীক্ষা করতে পারি ==। নিষ্ক্রিয় || == .এটি অগ্রভাগে রয়েছে কিনা তা সক্রিয় (ব্যাকগ্রাউন্ড থ্রেডের বিপরীতে)?
রবার্তো টমস

21

সুইফ্ট সংস্করণ:

let state = UIApplication.sharedApplication().applicationState
if state == .Background {
    print("App in Background")
}

8

আপনি যদি অ্যাপ্লিকেশনের অবস্থা সম্পর্কে "জিজ্ঞাসা" না করে কলব্যাকগুলি গ্রহণ করতে পছন্দ করেন তবে আপনার এই দুটি পদ্ধতি ব্যবহার করুন AppDelegate:

- (void)applicationDidBecomeActive:(UIApplication *)application {
    NSLog(@"app is actvie now");
}


- (void)applicationWillResignActive:(UIApplication *)application {
    NSLog(@"app is not actvie now");
}

1
এটি লক্ষণীয় গুরুত্বপূর্ণ যে অ্যাপ্লিকেশনডিলকোম্যাকটিভের আগে অ্যাপ্লিকেশনউইলএন্টারফোরগ্রাউন্ড কল করা হয়েছিল। অতএব, অ্যাপ্লিকেশনওয়ালইন্টারফোরগ্রাউন্ডের মধ্যে থেকে অ্যাপ্লিকেশন স্ট্যাটটি পরীক্ষা করা ইউআইএপ্লিকেশন স্টেটব্যাকগ্রাউন্ডে ফিরে আসবে। এটি আমাকে কিছুটা দূরে ফেলে দিয়েছে। সুতরাং, আমি অ্যাপ্লিকেশনওয়ালইন্টারফোরেগ্রাউন্ডের মধ্যে থেকে ইউআইএপ্লিকেশন স্টেটব্যাকগ্রাউন্ডের জন্য অ্যাপ্লিকেশন স্টেটটি পরীক্ষা করে (ভুলভাবে) এর পরিবর্তে অ্যাপ্লিকেশনডিডকোম্যাকটিভের পরিবর্তে উপরের সমাধানগুলির সংমিশ্রণটি ব্যবহার করেছি।
জাস্টিন ডোমনিটজ

আমার এই একই সমাধান ছিল এবং এটি সেই ক্ষেত্রে উপযুক্ত যেখানে আপনার অন্য থ্রেড / কাতারে রাষ্ট্রের তথ্য প্রয়োজন।
নাজ

4

সুইফট 5

let state = UIApplication.shared.applicationState
    if state == .background {
        print("App in Background")
        //MARK: - if you want to perform come action when app in background this will execute 
        //Handel you code here
    }
    else if state == .foreground{
        //MARK: - if you want to perform come action when app in foreground this will execute 
        //Handel you code here
    }

1
এই কোডটি প্রশ্নের উত্তর দিতে পারে, কেন এবং / অথবা এই কোডটির প্রশ্নের উত্তর কীভাবে তার দীর্ঘমেয়াদী মানকে উন্নত করে সে সম্পর্কে অতিরিক্ত প্রসঙ্গ সরবরাহ করে।
রোলস্টুহফলাহার

সুইফট 4 জন ব্যক্তির পক্ষে 4 জনকে সাহায্য করার জন্য বডি লেখার কারণে না
শাকিল আহমেদ

কোডটি আপনাকে ব্যাকগ্রাউন্ডে অ্যাপ্লিকেশন পরীক্ষা করবে! মনে করুন আপনি যদি পটভূমিতে বিজ্ঞপ্তিটি পেয়ে থাকেন এবং আপনি কিছু কিছু করতে চান যেমন নোটিফিকেশনটি পাওয়া যায় যখন ব্যাকগ্রাউন্ডের অ্যাপ্লিকেশনটি অভ্যন্তরীণ কোডটি কার্যকর করবে
শাকিল আহমেদ

3

সুইফট 4+

let appstate = UIApplication.shared.applicationState
        switch appstate {
        case .active:
            print("the app is in active state")
        case .background:
            print("the app is in background state")
        case .inactive:
            print("the app is in inactive state")
        default:
            print("the default state")
            break
        }

1

এটি অ্যাক্সেসকে কিছুটা সহজ করার জন্য একটি সুইফট 4.0 এক্সটেনশন:

import UIKit

extension UIApplication {
    var isBackground: Bool {
        return UIApplication.shared.applicationState == .background
    }
}

আপনার অ্যাপ্লিকেশন থেকে অ্যাক্সেস করতে:

let myAppIsInBackground = UIApplication.shared.isBackground

আপনি খুঁজছেন বিভিন্ন রাজ্যের তথ্যের জন্য ইন করেন ( active, inactiveএবং background), আপনি জানতে পারেন অ্যাপল ডকুমেন্টেশন এখানে

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.