Mobil Programlama

iOS

DERS PROGRAMI
iOS 301 Ders Programı

Sosyal Ağ Entegrasyonları

Lisans: Creative Commons 11.12.2020 tarihinde güncellendi
Bakabileceğiniz Etiketler: Eğitmen: Geleceği Yazanlar Ekibi

Bilindiği gibi geçtiğimiz yıllar sosyal ağların ve insanların buralarda yaptıkları paylaşımların yükseldiği yıllar oldu. Özellikle akıllı telefonların hayatımıza girmesiyle artık neredeyse her anımızı sosyal ağlarda kolaylıkla paylaşabilir hale geldik. Bu yüzden de şu anda piyasaya sürülen neredeyse bütün mobil uygulamalarda yapılan işlemlerin sosyal ağlarda paylaşılmasına yarayan bir fonksiyon bulunuyor. Özellikle oyunlarda sıkça rastladığımız ve rekabeti kamçılayan paylaşımlar sayesinde yeni uygulamalar kendilerini duyurma fırsatı yakalıyorlar.

iPhone platformunda, iOS 5 ile birlikte sunulan Twitter ve iOS 6 ile birlikte gelen Facebook entegrasyonları sayesinde uygulamanıza kolaylıkla sosyal ağ paylaşım seçenekleri ekleyebilirsiniz. Herhangi bir ek dosyaya ihtiyaç duymadan, sadece iOS içinde dahili sunulan kütüphanelerle uygulamanızı desteklenen sosyal ağlara birkaç dakika içinde entegre etmeniz ve kullanıcıları paylaşımlarla tanıştırmanız mümkün.

Şimdi örnek uygulama üzerinden sosyal ağ paylaşımlarını nasıl yapabileceğimize bakalım. Öncelikle uygulamamızda yeni bir ekran açalım ve bu ekrana iki düğme ekleyelim:

Örnek Uygulama

Burada Twitter ve Facebook ağları üzerinde paylaşım yapılması amaçlı iki düğme eklemiş olduk. Şimdi yapmamız gereken .h dosyasında gerekli fonksiyonları tanımlamak;

 

#import <UIKit/UIKit.h>
#import <Social/Social.h>

@interface ViewController : UIViewController
- (IBAction) shareTwitter:(id)sender;
- (IBAction) shareFacebook:(id)sender;
@end

 

Bu aşamadan sonra Interface Builder üzerinde shareTwitter ve shareFacebook fonksiyonlarını ilgili düğmeler atıyoruz. Burada dikkat etmemiz gereken bir diğer nokta, Social.h dosyasını projeye eklenmesi ve iOS ile birlikte gelen sosyal ağ paylaşımlarını kullanmak için SocialFramework’ün projeye dahil edilmesidir:

SocialFramework ve TwitterFramework

Burada yer alan seçeneklerden SocialFramework iOS 6 içerisinde sunulur. Twitter Framework ise iOS 5 ile birlikte gelen ve sadece Twitter ağını kapsayan bir kütüphanedir. Burada uygulamanızın versiyonuna ve ihtiyacınıza göre uygun frameworkü projenize dahil ediniz.

Bu aşamadan sonra yukarıda tanımladığımız shareTwitter metoduna aşağıdaki kodu yazalım:

 

- (IBAction) shareTwitter:(id)sender
{
    SLComposeViewController *socialController = [SLComposeViewController composeViewControllerForServiceType:SLServiceTypeTwitter];
    if([SLComposeViewController isAvailableForServiceType:SLServiceTypeTwitter])
    {
        SLComposeViewControllerCompletionHandler __block completionHandler = ^(SLComposeViewControllerResult result)
        {
            [socialController dismissViewControllerAnimated:YES completion:nil];

            switch(result){
                case SLComposeViewControllerResultCancelled:
                default:
                {
                    NSLog(@"İptal Edildi!");
                }
                break;
                case SLComposeViewControllerResultDone:
                {
                    NSLog(@"Gönderildi!");
                }
                break;
            }
        };

        [socialController addImage:[UIImage imageNamed:@"turkcell.jpg"]];
        [socialController setInitialText:@"Hayat paylaşınca güzel"];
        [socialController addURL:[NSURL URLWithString:@"http://www.turkcell.com.tr"]];
        [socialController setCompletionHandler:completionHandler];
        [self presentViewController:socialController animated:YES completion:nil];
    }
}

 

Burada Twitter servisi üzerinde paylaşım yapacağımızı SLServiceTypeTwitter enum değeriyle belirliyoruz. Şu anda ülkemizde Facebook ve Twitter ağları desteklendiğinden burada şimdilik iki seçeneğimiz olacak. Önümüzdeki iOS versiyonlarında buraya başka ağlar (özellikle konum tabanlı) ekleneceğine inanıyoruz.

Paylaşıma başlamadan önce isAvailableForServiceType metodu ile cihazda Twitter servisinin varlığı kontrol ediyoruz. completionHandler ise block metodu ve kullanıcı paylaşım ekranını herhangi bir şekilde bitirdiğinde devreye girecek kodu içeriyor. Burada SLComposeViewResultCancelled seçeneği kullanıcının paylaşımı iptal ettiğini, SLComposeViewResultDone ise paylaşımın başarılı bir şekilde gerçekleştiğini gösteriyor. Burada biz sonuçları konsola yazmayı tercih ettik. Örnek olarak siz de buradaki sonuçları bir mobil analiz servisine gönderecek kullanıcıların sosyal ağ paylaşımlarını takip edebilirsiniz.

addImage metodu yapılacak paylaşıma eklenecek resmi seçmemizi sağlar. Bu resim UIImage sınıfından istenilen bir resim olabilir. setInitialText ise yapılacak paylaşımla ilgili metin değeridir. Örnekte, Turkcell’in “Hayat paylaşınca güzel” sloganını görüyoruz. addURL ise paylaşımla beraber bir link koymamızı sağlıyor. Tanımlamalar bittikten sonra presentViewController metodu çağırılarak ekrana Twitter paylaşım penceresini getiriyoruz:

 

Eğer cihazda tanımlı bir Twitter hesabı yoksa iOS otomatik olarak “No Twitter Account” yazılı bir uyarı penceresini ekrana getirecektir. Burada Settings düğmesine basıldığında kullanıcı telefonun ayarlar bölümüne yönlendirilir ve Twitter hesabının bağlaması istenir. Cancel düğmesi ise paylaşımı iptal edecektir. iOS üzerinde yer alan diğer SDK’larda olduğu gibi SocialFramework’te yapılacak sosyal paylaşımın kontrolünü uygulama geliştiricinin elinden alır ve son kullanıcıya verir. Bu hareket tamamen son kullanıcıyı koruma amaçlıdır. Biz uygulama geliştiriciler ise sadece kullanıcının yaptığı son hareketi completionHandler içerisinde görürüz. Şimdi bir Twitter hesabı tanımlandığında oluşan ekrana göz atalım;


Kodun içerisinde tanımladığımız resim ve metin değerleri de ekrana bu şekilde gelecektir. Gördüğünüz gibi kullanıcı Send düğmesine basmadan onun adına herhangi bir paylaşım gerçekleşmez. Aynı şekilde Add Location seçeneği ile konum paylaşmak da tamamen kullanıcının kontrolünde gerçekleşir. Sağ altta yer alan 72 rakamı ise kullanıcının yazabileceği karakter sayısını belirler. Twitter için üst limit 140 karakterdir.

Şimdi ise Facebook paylaşımı için shareFacebook metodunu aşağıdaki gibi dolduralım;

 

- (IBAction) shareFacebook:(id)sender
{
    SLComposeViewController *socialController=[SLComposeViewController composeViewControllerForServiceType:SLServiceTypeFacebook];
    if([SLComposeViewController isAvailableForServiceType:SLServiceTypeFacebook])
    {
        SLComposeViewControllerCompletionHandler __block completionHandler=^(SLComposeViewControllerResult result)
        {
            [socialController dismissViewControllerAnimated:YES completion:nil];

            switch(result){
                case SLComposeViewControllerResultCancelled:
                default:
                {
                    NSLog(@"İptal Edildi!");
                }
                break;
                case SLComposeViewControllerResultDone:
                {
                    NSLog(@"Gönderildi!");
                }
                break;
            }
        };

        [socialController addImage:[UIImage imageNamed:@"turkcell.jpg"]];
        [socialController setInitialText:@"Hayat paylaşınca güzel"];
        [socialController addURL:[NSURL URLWithString:@"http://www.turkcell.com.tr"]];
        [socialController setCompletionHandler:completionHandler];
        [self presentViewController:socialController animated:YES completion:nil];
    }
}

 


Gördüğünüz gibi Twitter paylaşım kodundan tek fark SLServiceTypeFacebook değerini değiştirmemiz oldu. Bunu yaptıktan sonra Facebook paylaş düğmesine bastığımızda aşağıdaki pencere görüntülenecektir:

 

Twitter paylaşım penceresine benzemesine rağmen Facebook penceresinde iki yeni özellik yer almaktadır. İlk olarak fotoğrafın altında yer alan iOS Photos düğmesine basıldığında o anda tanımlı Facebook hesabında yer alan albümler listelenir ve resmin hangi albüme koyulacağı seçilebilir. Sağ altta yer alan Friends düğmesi ise yapılan paylaşımın kimler tarafından görüntülenebileceğini seçmemizi sağlar.