iOS, Android, Windows mobile development codes and tips

Yazılar Etiketlenmiş ios

iOS Documents Klasörüne Dosya Kopyalamak

Uygulamanız cihaz üzerinde çalıştığında yazma izni sadece /Documents klasöründe vardır. Bu nedenle .sqlite gibi yazma izni gerektiren dosyalarınızı bu klasörde çalıştırmanız gereklidir.
Fakat Xcode size dosyalarınızı koyabileceğiniz bir /Documents klasörü sunmaz. Uygulamanız, cihaza yüklendiğinde otomatik yaratılan bu klasöre bir dosya kopyalamak için aşağıdaki kodu kullanabilirsiniz.
Yüklemek istediğiniz dosya root(ana) dizinde xcode projenize eklenmiş olmalıdır.
İlgili kontrol kodlarını da ekleyerek bu işlemi sadece bir kez yapmalısınız, aksi halde uygulamanız her açıldığında dosyanın üzerine kopyalarsınız ve kullanıcıya veri kayıpları yaşatabilirsiniz.


NSFileManager *fmngr = [[NSFileManager alloc] init];
NSString *filePath = [[NSBundle mainBundle] pathForResource:@"history.sqlite" ofType:nil];
NSError *error;
if(![fmngr copyItemAtPath:filePath toPath:[NSString stringWithFormat:@"%@/Documents/history.sqlite", NSHomeDirectory()] error:&error]) {
// handle the error
NSLog(@"Dosya yaratılamadı: %@", [error description]);
}
[fmngr release];

iOS Sunucuya Veri Gönderme

Uygulamadan sunucumuzdaki bir php dosyasına veri göndermek için aşağıdaki kodu kullanabiliriz.
Örneğimizde cihazla ilgili bazı bilgileri gönderiyoruz.


#import "UIDeviceHardware.h"

- (void) postDataRequest {

NSString *urlstr = [[NSString alloc] initWithFormat:@"http://www.sulubeyn.com./data.php?name=%@&sysver=%@&uuid=%@&v=1.0",
[[UIDevice currentDevice] name],
[[UIDevice currentDevice] systemVersion],
[[UIDevice currentDevice] uniqueIdentifier]
];
NSString *urlstrEscape = [urlstr stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];

NSURLRequest *theRequest=[NSURLRequest requestWithURL:[NSURL URLWithString:urlstrEscape]
cachePolicy:NSURLRequestUseProtocolCachePolicy
timeoutInterval:3.0];

NSURLConnection *theConnection=[[NSURLConnection alloc] initWithRequest:theRequest
delegate:self];
NSLog(@"%@", theConnection);
}

iOS İnternetten Resim Download

iOS programlamada herzaman işimize yarıyacak bir snippet’ı paylaşıyoruz.

-(void)SaveImageFromUrl
{

NSLog(@"Downloading...");

NSString *jpg_adi = [[NSUserDefaults standardUserDefaults] stringForKey:@"jpg_adi"];

NSString *urlAddress = [[NSString alloc] initWithFormat:@"http://www.sulubeyn.com/images/%@.jpg",jpg_adi];

UIImage *image = [[UIImage alloc] initWithData:[NSData dataWithContentsOfURL:[NSURL URLWithString:urlAddress]]];

[Photo setImage:image];

}

iOS Sdk da Kendi Function Kütüphanelerimizi Oluşturmak

Alışık olduğumuz programlama dillerinden objective C ye direk dalış yaptığımızda biraz afallar gibi oluyoruz. Ama php, c# , c++ ve benzeri dillere azda olsa aşina olanlar kendi kütüphanelerini yaratmak isteyeceklerdir.

Xcode ile yeni bir proje açıp yeni bir class ekliyoruz. Classımızın adı Function .h ve .m dosyalarını aşağıdaki gibi revize ediyoruz.

Function.h


#import <Foundation/Foundation.h>

@interface Functions : NSObject {
NSString *Alert_Message;
NSString *AlertBox_Title;

}
@property(nonatomic,copy) NSString *Alert_Message;
@property(nonatomic,copy) NSString *AlertBox_Title;

- (void)ShowSimpleAlertBox;
- (void)ShowOkCancelAlertBox;

@end

Function.m


#import "Function.h"

@implementation Functions

@synthesize Alert_Message;
@synthesize AlertBox_Title;

-(void) ShowOkCancelAlertBox
{
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:AlertBox_Title message:Alert_Message
delegate:self cancelButtonTitle:@"No" otherButtonTitles:@"Yes", nil];
[alert show];
[alert release];
}

-(void) ShowSimpleAlertBox
{

UIAlertView *alert= [[UIAlertView alloc] initWithTitle:AlertBox_Title
message:Alert_Message
delegate:nil
cancelButtonTitle:@"OK"
otherButtonTitles: nil];
[alert show];
[alert release];

}

@end

iOS SMS Gönderimi

Uygulamadan çıkmadan SMS gönderim ekranını telefon numarası ve mesaj hazır bir şekilde göstermek için aşağıdaki kodu kullanabilirsiniz.

- (void) SMSContact {

NSString *SMSnumber = @"05001234567";
NSString *SMStext = @"Hello Sulubeyn";

Class smsClass = (NSClassFromString(@"MFMessageComposeViewController"));
if (smsClass != nil && [MFMessageComposeViewController canSendText]) {
MFMessageComposeViewController *controller = [[MFMessageComposeViewController alloc] init];
controller.body = SMStext;
controller.recipients = [NSArray arrayWithObject: SMSnumber];
controller.messageComposeDelegate = self;
[self presentModalViewController:controller animated:YES];
[controller release];

} else {
//Cihaz SMS desteklemiyorsa uyarı çıkartalım.
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:nil message:@"Cihaz SMS desteklemiyor!"
delegate:self cancelButtonTitle:nil otherButtonTitles:@"Tamam", nil];
alert.tag = 1;
[alert show];
[alert release];

}

}

Kullanıcının yaptığı işlemi kontrol etmek için aşağıdaki kodu kullanmamız gerekiyor.

- (void)messageComposeViewController:(MFMessageComposeViewController *)controller didFinishWithResult:(MessageComposeResult)result {

switch (result)
{
case MessageComposeResultCancelled:

NSLog(@"Sonuç: sms iptal edildi");
break;
case MessageComposeResultSent:
NSLog(@"Sonuç: sms gönderildi");
break;
case MessageComposeResultFailed:
NSLog(@"Sonuç: sms başarısız");
break;
default:
NSLog(@"Sonuç: sms gönderilmedi");
break;
}

//Statusbar kapalıysa bile görünebilir, bunu engellemek için bu kodu eklemekte fayda var.
[[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:NO];

//Viewi kapatıyoruz
[self dismissModalViewControllerAnimated:YES];

}