Bagaimana saya bisa mendeteksi peluncuran pertama kali
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
// if very first launch than perform actionA
// else perform actionB
}
metode?
ios
iphone
launch
launching-application
Shishir.bobby
sumber
sumber
Jawaban:
sumber
BOOL
. 2. Kemudian kesalahan ada dalam kode Anda ... jika mengembalikan 0 membuat crash ini, maka ada sesuatu yang sangat salah - di tempat lain.NSUserDefaults
tempat biasa? bagaimana jika aplikasi lain menggunakan "kunci" yang sama yang saya gunakan?Di Swift 3, 4 coba ini:
Di Swift 2 coba ini,
UPDATE: - Untuk OBJ-C saya menggunakan ini,
Ref untuk OBJ-C: https://stackoverflow.com/a/9964400/3411787
sumber
Saya menulis perpustakaan kecil untuk tujuan ini. Ini membuat saya tahu apakah ini adalah peluncuran pertama, atau hanya untuk versi ini, dan versi sebelumnya yang telah diinstal pengguna. Ini tersedia di github sebagai cocoapod di bawah lisensi Apache 2: GBVersionTracking
Anda cukup memanggil ini
application:didFinishLaunching:withOptions:
Dan kemudian untuk memeriksa apakah ini adalah peluncuran pertama panggil saja ini di mana saja:
Dan juga:
sumber
untuk Swift 3.0 - Swift 5
tambahkan ekstensi
kemudian dalam kode Anda
sumber
Gagasan lain untuk Xcode 7 dan Swift 2.0 adalah menggunakan ekstensi
Sekarang Anda dapat menulis di mana saja di aplikasi Anda
Saya pribadi lebih suka perpanjangan aplikasi UIA seperti ini:
Karena pemanggilan fungsi lebih deskriptif:
sumber
Anda dapat menerapkannya dengan metode statis di bawah ini:
sumber
Anda perlu menyimpan sesuatu saat diluncurkan dan kemudian memeriksa untuk melihat apakah ada. Jika tidak, ini pertama kalinya. "Sesuatu" dapat berupa file, entri basis data, pengaturan di default pengguna ....
sumber
Cukup mudah untuk melakukan ini dan hanya membutuhkan enam baris kode.
Akan bermanfaat untuk menambahkan kode ini dalam preferensi peluncuran aplikasi Anda atau di mana pun Anda mungkin perlu menguji apakah ini pertama kali aplikasi Anda dijalankan.
PS JANGAN gunakan bools di preferensi Cukup menempel bilangan bulat. Nilai standarnya ke nol saat tidak terdefinisi.
Juga,
[theDefaults synchronize];
garis tidak diperlukan tetapi saya telah menemukan bahwa ketika aplikasi dijalankan ratusan kali di ratusan perangkat, hasilnya tidak selalu dapat diandalkan, selain itu, itu praktik yang lebih baik.sumber
simpan kunci bool di NSUserDefaults pertama kali itu tidak akan Anda ubah menjadi ya dan simpan seperti itu sampai aplikasi hapus atau instal kembali akan menjadi yang pertama kali.
sumber
Fungsi cepat dan mudah
sumber
Untuk Swift 2.0 di Xcode 7. Di file AppDelegate.swift:
sumber
Daftarkan nilai default pada peluncuran aplikasi:
Nilai yang jelas pada penghentian aplikasi:
Periksa nilai:
sumber
Dalam cepat saya akan menyarankan untuk menggunakan konstanta global yang dapat dilakukan dengan sangat mudah di luar lingkup apa pun seperti di atas delegasi App. Dengan demikian itu akan ditetapkan ke nilai yang tepat selama aplikasi tidak dihentikan. masih akan mengembalikan nilai yang sama jika aplikasi pergi ke latar belakang atau lebih. nilai akan berubah hanya jika aplikasi diluncurkan kembali seluruhnya.
Tapi sejujurnya lebih baik untuk melacak fakta bahwa aplikasi telah dikirim ke latar belakang setidaknya sekali. Dalam kasus seperti itu saya lebih suka menggunakan ekstensi pada aplikasi UIAp dan mengatur flag pada metode applicationDidEnterBackground sedemikian rupa sehingga:
dan kemudian di delegasi aplikasi Anda atau delegasi adegan
sumber
Swift 5 iOS 13.
Saya suka cepat dan mudah oleh Chris Fremgen . Jadi saya memperbaruinya.
sumber
Diperbarui untuk XCode 11 , Swift 5
Maka Anda menyebutnya sebagai
sumber
NSUserDefaults + Makro
Pendekatan terbaik adalah menggunakan
NSUserDefaults
dan menyimpanBOOL
variabel. Seperti disebutkan di atas, kode berikut akan baik-baik saja:Anda juga dapat membuat makro seperti di bawah ini untuk dengan mudah memeriksa apakah ini adalah peluncuran pertama atau tidak
Kemudian gunakan seperti itu,
sumber
Berikut ini jawaban yang berfungsi di swift 5.0. Peningkatan dibandingkan dengan jawaban @Zaid Pathan adalah bahwa tidak ada kontrak tersembunyi. Jika Anda tidak menelepon
setFirstAppLaunch()
tepat sekali sebelum meneleponisFirstAppLaunch()
Anda akan mendapatkan kesalahan pernyataan (hanya dalam mode debug).Maka Anda hanya perlu memanggil fungsi
setFirstAppLaunch()
di awal aplikasi Anda danisFirstAppLaunch()
kapan pun Anda ingin memeriksa apakah aplikasi Anda telah dipanggil.sumber