Unity Android Sosyal Medyada İçerik Paylaşma

Yayınlandı: 04 Haziran 2018 yasirkula tarafından Oyun Tasarımı, UNITY 3D içinde
Etiketler:, , , , , , , ,

Tekrardan merhabalar,

Bu Unity dersinde, Android ve iOS platformlarında nasıl sosyal medyada dosya ve(ya) yazı paylaşabileceğinizi göstereceğim. Bu şekilde, örneğin level bitince, kullanıcı skorunu veya oyundan bir screenshot’ı Facebook, WhatsApp, Twitter vs. sosyal platformlarda paylaşabilir.

Hazırsanız başlayalım…

Kurulum

Öncelikle şu adresteki unitypackage‘ı Assets-Import Package yoluyla projenize import edin: https://github.com/yasirkula/UnityNativeShare/raw/master/NativeShare.unitypackage

Eğer iOS’a build alacaksanız, Plugins/NativeShare/Editor/NSPostProcessBuild.cs scriptindeki PHOTO_LIBRARY_USAGE_DESCRIPTION‘ın değerini dilerseniz değiştirin. Buraya girdiğiniz yazı, kullanıcı paylaşılan resmi veya videoyu galeriye kaydetmek isterse, galeriye erişim izni isterken gözükecek.

Eğer Android’e build alacaksanız, projenizin Assets/Plugins/Android klasöründe bir AndroidManifest.xml dosyası bulunması gerekiyor. Henüz bir AndroidManifest’iniz yoksa C:\Program Files\Unity\Editor\Data\PlaybackEngines\AndroidPlayer konumundaki Unity’nin varsayılan AndroidManifest.xml dosyasını kopyalayıp (dosya Apk gibi bir alt klasörde de olabilir) projenizin Assets/Plugins/Android klasörüne yapıştırın (Plugins veya Android klasörleri yoksa elle oluşturun).

Ardından AndroidManifest’te <application>...</application> etiketleri arasına şunu yapıştırın:

<provider // >_>
  android:name="com.yasirkula.unity.UnitySSContentProvider"
  android:authorities="EŞSİZ_BİR_STRİNG"
  android:exported="false"
  android:grantUriPermissions="true" />

Buradaki “EŞSİZ_BİR_STRİNG“i kendinize has eşsiz bir yazı ile değiştirin (mesela oyununuzun bundle identifier‘ı). Bu değerin eşsiz olması gerekmesinin sebebi, bir cihaza aynı authorities‘e sahip birden çok uygulamanın yüklenememesidir. Bu string’de boşluk veya Türkçe karakter kullanmayın (ne olur ne olmaz). Örneğin:

Kullanım

Öncelikle new NativeShare() şeklinde yeni bir NativeShare objesi oluşturun. Ardından bu objenin aşağıdaki fonksiyonlarından istediklerinizi çağırarak paylaşılan içeriği kişiselleştirebilirsiniz:

SetSubject( string subject ): Paylaşılan içeriğin konusunu belirler. Bu değer daha çok e-posta uygulamalarında kullanılır.

SetText( string text ): Paylaşılan içeriğe yazı ekler. Ancak Facebook gibi bazı uygulamalar hem resim hem de yazı paylaşmaya kalkışırsanız yazıyı yoksayarlar, bu konuda maalesef yapacak bir şey yok.

AddFile( string filePath, string mime = null ): Paylaşılan içeriğe dosya (örneğin resim veya video) eklemeye yarar. Bu fonksiyonu birden çok kez çağırarak birden fazla dosyayı aynı anda paylaşabilirsiniz. filePath‘e değer olarak dosyanın konumunu girin. Eğer dosyanın mime‘ını biliyorsanız mime parametresine değer olarak girebilirsiniz (örneğin PNG resim paylaşıyorsanız image/png girebilirsiniz). Bilmiyorsanız veya uğraşmak istemiyorsanız bu değeri null olarak bırakabilirsiniz. Bu durumda dosyanın mime’ı, dosya uzantısından otomatik olarak belirlenmeye çalışılacaktır. mime parametresinin iOS’ta bir etkisi yoktur.

SetTitle( string title ): İçeriğin paylaşılacağı uygulamayı seçmeye yarayan diyaloğun başlığındaki yazıyı belirler. Bu parametrenin iOS’ta bir etkisi yoktur.

İşiniz bitince NativeShare objesinin Share() fonksiyonunu kullanarak içeriği paylaşabilirsiniz.

Örnek Kod

Aşağıdaki kod, ekrana tıklayınca screenshot alıp bu screenshot’ı bir yazı ve konu eşliğinde paylaşmaya yarar:

void Update()
{
	if( Input.GetMouseButtonDown( 0 ) )
		StartCoroutine( ScreenshotAlVePaylas() );
}

private IEnumerator ScreenshotAlVePaylas()
{
	yield return new WaitForEndOfFrame();

	Texture2D ss = new Texture2D( Screen.width, Screen.height, TextureFormat.RGB24, false );
	ss.ReadPixels( new Rect( 0, 0, Screen.width, Screen.height ), 0, 0 );
	ss.Apply();

	// Screenshot'ı geçici bir dosyaya yaz
	string dosyaKonumu = Path.Combine( Application.temporaryCachePath, "geçici resim.png" );
	File.WriteAllBytes( dosyaKonumu, ss.EncodeToPNG() );

	// Artık screenshot'a ihtiyacımız kalmadı
	Destroy( ss );

	// Dosyayı yazı ve konu eşliğinde paylaş
	new NativeShare().AddFile( dosyaKonumu ).SetSubject( "Konu buraya gelecek" ).SetText( "Merhaba Dünya!" ).Share();
}

İşte bu kadar! İlerleyen derslerde görüşmek üzere…

Bir Cevap Yazın

Aşağıya bilgilerinizi girin veya oturum açmak için bir simgeye tıklayın:

WordPress.com Logosu

WordPress.com hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Google+ fotoğrafı

Google+ hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Twitter resmi

Twitter hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Facebook fotoğrafı

Facebook hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Connecting to %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.