"Enter"a basıp içeriğe geçin

Kategori: iPad

Tablet uygulama mobil uygulama doğurdu!

Tam bu başlıkta yazdığımız gibi oldu! Neredeyse bir yıldır  yürüttüğümüz gönüllü girişimimiz ücretsiz kütüphane otomasyon projemiz Kitapi için inovatif sayılabilecek bir iPad uygulaması (KitPad) hazırlıyorduk. Bu iPad kütüphanenin içinde, duvarda sabit duracak, çocuklar da iPad’in QR kod okuma özelliğinden faydalanarak Kitapi üzerinde ödünç alma, teslim etme, kitap borcu sorgulama gibi temel işlemleri kimseyi meşgul etmeden kendi başlarına yapacaklardı. İlk etapta beş fonksiyonu bulunan bu uygulamanın henüz ortalarındayken aklımıza şu geldi: iPad’le QR kod okuyup Kitapi’nin apisi üzerinden veri çekebiliyorsak, bunun tersini de yapıp Kitapi’ye okuduğumuz QR’ları gönderip akıllı telefonumuzu QR okuyucu / QR Reader olarak kullanabilir miyiz diye düşündük. Aslında…

Core Data verisini dolu kullanmak – iOS

İlk ve tek ücretli iOS uygulamamız Ebruli Osmanlıca Sözlük’ün son sürümündeki bazı teknik sıkıntılar nedeniyle epey kötü yorum almış bir developer olarak diğer işlerimden vakit ayırıp bu sorunlu versiyonu düzeltmeye karar vermiştim. Yılbaşında bu fırsatı değerlendirip kodu gözden geçirmiş, sorunlu yerlerin civatalarını sıkılaştırmıştım ama istediğim gibi olmamıştı. Araya bir de gâvurların noel tatili girince uygulamayı AppStore’a gönderememiştim. Bu gece Ebruli’yi kökünden halletmeye karar verdim. Sorun şuydu: Uygulamanın son versiyonunda Apple’in kendi veritabanı sistemi olan Core Data’yı kullanmak istemiştim. Core-Data’nın kendisi de zaten SQLite tabanlı bir sistem ama kötü bir kod olmasın, abudik gubidik sqlite işlemleri yapmayayım diye bu yolu seçmiştim.…

İyi sanatçılar kopyalar, büyük sanatçılar çalar

3 Aralık 2012’de şu sayfada bahsettiğim Romo’yla nihayet tanışma fırsatı bulduk. Bir Kickstarter başarı hikayesi olan Romo tam da beklediğim kalitede bir ürün olarak karşıma çıktı. Ürünün CE, FC gibi çeşitli standartlardan ziyade Apple’ın verdiği MFi (Made For iDevices) ibaresi taşıması ayrı bir önem arz ediyor benim için. Romo’yu henüz tam olarak inceleyemedim, zira Lightning girişi olan bir cihaz sipariş vermiştim ve ürün gelene kadar ben de öyle bir iPod’a yahut iPhone’a sahip olurum diye düşünmüştüm. Henüz olamadığım için Romo’yu ofisteki arkadaşların iPhone5’leri ile deneyecek kadar kurcalayabildim. Romo’nun gücü kaliteli donanımından ziyade onu çalıştıran yazılımdan geliyor veya gelecek. Zira yazılım…

Robi’ye Devam

Nerdeyse bir yıl önce burada da bahsettiğim robot projem için bir kaç aydır Kosgeb projesi hazırlamakla meşguldüm. Çalıştığım firmamın desteğiyle konuya hakim bir danışman arkadaşımızın gayretleri neticesinde projemiz çok şükür Kosgeb’den onay aldı. Artık önümüzde 15 aylık bir süreç var. Bu proje görünenin aksine aslında bir yazılım ar-ge projesi. Zira elektronik kısmı için profesyonel bir firmadan hizmet alımında bulunacağız. Benim derme çatma elektronik bilgim bu işe müsait değil 🙂 Tabi projenin elektronik kısmı hakkında da bilgi sahibi olmaya gayret edeceğim ama asıl yazılım konusunda zorlu ve uzun bir yol var önümüzde. Robotun yani Robi’nin otonom ve uzaktan kontrol şeklinde iki…

Objective-C’de Mail Gönderme Modal’ı Kullanmak

Bazı uygulamalarda gördüğümüz mail gönderme modalını hazırlamak çok basitmiş. Evvela projeye  MessageUI.framework framework’ünü eklemek gerekiyor.  Sonra mail modalını kullanacağımız ekranın OrnekViewController.h dosyasında aşağıdaki dosyaları yüklemek ve  ayrıca mail gönderme işlemleri ile ilgili delegate fonksiyonlarını da bu class’da kullanabilmek için MFMailComposeViewControllerDelegate ifadesini kullanmak gerekiyor. #import <UIKit/UIKit.h> #import <MessageUI/MessageUI.h> #import <MessageUI/MFMailComposeViewController.h> @interface OrnekViewController : UIViewController<MFMailComposeViewControllerDelegate>{ } @end Daha sonra OrnekViewController.m dosyasında şu iki fonksiyonu kullanmak yeterli.. – (IBAction)actionEmailComposer{ if ([MFMailComposeViewController canSendMail]) { MFMailComposeViewController *mailViewController = [[MFMailComposeViewController alloc] init]; mailViewController.mailComposeDelegate = self; [mailViewController setSubject:@”Mail Konusu”]; [mailViewController setMessageBody:@”mesaj” isHTML:NO]; [self presentViewController:mailViewController animated:YES completion:nil]; } else { NSLog(@”Mail gonderilemiyor”); } } -(void)mailComposeController:(MFMailComposeViewController*)controller didFinishWithResult:(MFMailComposeResult)result error:(NSError*)error{ [self…

Objective-C’de integer MutableArray’i oluşturmak

Bir iki haftadır QuickDialog kütüphanesi ile bir proje geliştirmeye çalışıyorum. Dökümantasyonu malesef çok açıklayıcı olmadığı için işin acemisi olarak biraz zorlanıyorum. QuickDialog’da “çoktan seçmeli” bir liste oluşturmak ve bir tuşa dokunulduğunda bu listedeki tüm elemanların seçili olmasını sağlamaya çalışıyordum. QRadioSection adındaki bu yapı selectedIndexes isimli bir NSMutableArray içerisinde seçili öğelerin indislerini tutuyor. Tüm elemanları seçili hale getirmek için bu MutableArray’a tüm indisleri yazmalı ve tabloyu reload fonksiyonu ile yenilemeliyiz. Buraya kadarını anladım fakat ne yaptımsa selectedIndexes’a tüm indisleri yerleştiremedim. Mesela şu yolu denedim; QRadioSection  *liste=[[self.root sections] objectAtIndex:0]; NSMutableArray *arr=[[NSMutableArray alloc] initWithObject:0,1,2,3,nil]; [liste setSelectedIndexes:arr]; Bu şekilde yazınca hata vermiyordu ama listede…

NSMutableDictionary’den eleman silmek

Objective-C’de NSMutableDictionary tipindeki bir değişkenden [dict removeObjectForKey:key] fonksiyonu ile eleman silinir. Eğer bu işlemi yaparken *** Terminating app due to uncaught exception ‘NSGenericException’, reason: ‘*** Collection <__NSDictionaryM: 0x92c50b0> was mutated while being enumerated.’ hatası alıyorsanız; bir iterasyon sırasında yani NSMutableDictionary tipindeki değişkenin elemanları üzerinde döngü ile dolaşırken bu işi yapmaya kalkıyorsunuz demektir.     for (NSString* key in dict) { if([key isEqualToString:@”silinecek_key”]) [dict removeObjectForKey:key];  //iterasyon içerisinde bu işlem yapılmaz! } Bu  hatayı engellemek için döngü içerisinde hangi öğelerin silineceğini bir dizide tutmalı ve döngü sonrasında bu elemanları değişkenden çıkarmalıyız. İkinci bir yol olarak da NSMutableDictionary tipindeki değişkenin üzerinde değil, [dict allKeys]…

CocoaPods ile QuickDialog Kurulumu

Bir önceki yazıda bahsettiğim kütüphanelerden QuickDialog‘u web sitesindeki yönergeleri defaatle tekrarladığım halde başarılı bir şekilde projeme dahil edemedim. Sürekli “#import <QuickDialog/QuickDialog.h> file not found!” deyip durdu. Forumlarda da çare bulamadım. Ofisteki bir arkadaşımın “CocoaPods‘la kurmayı deneyelim” demesiyle kolları sıvadık. Aslında bir önceki yazıda CocoaPods’dan da bahsetmiştim ama oraya yazdığım üzere CocoaPods’un sadece bu kütüphanelerin son sürümlerini takip edebilmek için bir araç olduğunu düşünmüştüm. Meğer bu paketleri projemize dahil edebilmek için kullanılıyormuş CocoaPods. Önce CocoaPods’u kuralım. Web sitesinde de yazdığı üzere CocoaPods “ruby gem” adı verilen bir platform üzerinden kullanılabiliyor. Ruby gem’i kurmak için de makinemde zaten kurulu olan “macports” platformunu…

Mobilist’ten iOS Uygulama Geliştirme İpuçları

Geçen ay (21 Nisan) Bahçeşehir Üniversitesi’nde yapılan Mobilist – Mobil Uygulama Geliştirme Konferansı’nda aldığım bazı notları kaynakları ile birlikte yayınlamak istiyorum. Konferans’da iOS konusunda Sarp Erdağ, Taylan Pince ve Emrah Ayanoğlu konuşma yaptılar. Bilhassa Sarp Erdağ (Hızlı iOS ve Mac uygulama geliştirme) ve Taylan Pince’nin (iOS ve XCode Üzerine Pratik Öneriler) sunumları çok ilgimi çekti. Sarp Erdağ’ın sunumundan aldığım notlar: Uygulama inceleme siteleri: App Annie, 148Apps, Distimo Uygulamanızı minimum ihtiyaçları karışlayacak şekilde hızlıca çıkarın, sonraki güncellemelerle diğer özellikleri ekleyin. Geliştirme safhasını kısa tutun Arayüz sade ve kullanışlı olsun, abartılardan, karmaşık detaylardan kaçının Kimler nasıl mobil arayüzler hazırlamış diye inceleyin: pttrns.com…