Ezgi Vanlı

PUygulamayı mağazalara yayınlamak, inceleme süresi nedeniyle bazen çok yorucu olabiliyor ve bazen de inceleyen kişi çeşitli nedenlerle bu sürümü reddedebiliyor. Bunun yanı sıra, bazen küçük hatalar yapıyor veya küçük değişiklikler istiyoruz. Ve kim bu süreci her seferinde tekrar tekrar yaşamak ister ki? CodePush bu sorunu tamamen çözüyor. CodePush’ı uyguladıktan sonra, yerel kodları değiştirmediğiniz sürece uygulamanızı istediğiniz zaman güncelleyebilirsiniz.

Kulağa hoş geliyor, değil mi? CodePush’ı nasıl uyguladığınızı öğrenelim.

“Tarihinizle değil, hayallerinizle yaşayın.” — Stephen Covey

CodePush Nedir?

Microsoft App Center tarafından sağlanan bir hizmet olan CodePush, geliştiricilerin React Native uygulamalarındaki güncellemeleri App Store veya Google Play Store’a gitmeden doğrudan kullanıcıların cihazlarına göndermelerine olanak tanır. Bu makalede, CodePush’ın React Native’deki kullanımı, avantajları, uygulaması ve en iyi uygulamaları ele alınacaktır.

CodePush Kullanmanın Faydaları

  1. Sorunsuz Güncellemeler: CodePush, güncellemeleri anında sunmanızı sağlayarak kullanıcıların uygulama mağazası onaylarını ve indirmelerini beklemelerine gerek kalmaz. Bu, daha hızlı hata düzeltmeleri ve özellik lansmanları anlamına gelir ve daha tatmin edici bir kullanıcı deneyimi sağlar.
  2. Yayın Döngüsünü Azaltın: CodePush, uygulama mağazalarının gerektirdiği uzun yayın döngüsünü atlamanızı sağlar. Güncellemeleri ihtiyaç duyduğunuz sıklıkta gönderebilir, böylece sorunları anında ele alabilir ve son teknoloji bir uygulamayı daha kolay koruyabilirsiniz.
  3. A/B Testi: Güncellemeleri bir kullanıcı alt kümesine göndererek A/B testi uygulayın. Bu sayede, tam ölçekli bir sürüm yayınlamadan önce geri bildirim toplayabilir ve yeni özelliklerin performansını değerlendirebilirsiniz.
  4. Optimize Edilmiş Yayınlar: Güncellemeleri kullanıcılara aşamalı olarak yayınlayın ve öngörülemeyen sorunların tüm kullanıcı tabanını etkilemeden önce ele alınmasını sağlayın.

React Native projenizde CodePush kullanmaya başlamak için şu adımları izleyin:

Öncelikle projenize CodePush’u yüklemeniz gerekiyor:

yarn add react-native-code-push

Daha sonra projenizi Microsoft’un uygulama merkezinde kurmanız gerekiyor.

## CODEPUSH
IOS_CODE_PUSH_KEY=KEY_IOS
ANDROID_CODE_PUSH_KEY=KEY_ANDROID

Şimdi işletim sistemlerini kurmanız gerekiyor

iOS;

  1. Tüm gerekli CocoaPods bağımlılıklarını yüklemek için cd ios && pod install && cd .. komutunu çalıştırın.
  2. AppDelegate.m dosyasını açın ve CodePush başlıkları için bir içe aktarma ifadesi ekleyin:
#import <CodePush/CodePush.h>

3. Üretim sürümleri için köprünün kaynak URL’sini ayarlayan aşağıdaki kod satırını bulun:

- (NSURL *)sourceURLForBridge:(RCTBridge *)bridge

4. Yöntemi şu şekilde değiştirin:

- (NSURL *)sourceURLForBridge:(RCTBridge *)bridge
{
#if DEBUG
return [[RCTBundleURLProvider sharedSettings] jsBundleURLForBundleRoot:@"index" fallbackResource:nil];
#else
return [CodePush bundleURL];
#endif
}

5. Dağıtım anahtarını Info.plist’e ekleyin:


<key>CodePushDeploymentKey</key>
<string>$(IOS_CODE_PUSH_KEY)</string>

ANDROID;

  1. Android/settings.gradle dosyanızın sonuna aşağıdaki eklemeleri yapın:
...
include ':app', ':react-native-code-push'
project(':react-native-code-push').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-code-push/android/app')

2. Android/app/build.gradle dosyanızda, codepush.gradle dosyasını dosyanın sonuna ek bir derleme görevi tanımı olarak ekleyin:

...
apply from: "../../node_modules/react-native-code-push/android/codepush.gradle"
...

3. Update the MainApplication.java file to use CodePush via the following changes:

...
// 1. Import the plugin class.
import com.microsoft.codepush.react.CodePush;

public class MainApplication extends Application implements ReactApplication {

private final ReactNativeHost mReactNativeHost = new ReactNativeHost(this) {
...

// 2. Override the getJSBundleFile method in order to let
// the CodePush runtime determine where to get the JS
// bundle location from on each app start
@Override
protected String getJSBundleFile() {
return CodePush.getJSBundleFile();
}
};
}

4. Dağıtım anahtarını build.gradle’a ekleyin;

def codePushKey = safeExtGet("ANDROID_CODE_PUSH_KEY")

veya

Dağıtım anahtarını Strings.xml’e ekleyin;

 <resources>
<string name="app_name">AppName</string>
<string moduleConfig="true" name="CodePushDeploymentKey">DeploymentKey</string>
</resources>

Kurulumlar tamamlandı. Şimdi kullanıcı indirme durumunu gösteren bir ekrana ihtiyacınız var.

  1. İşlevsel bir bileşen oluşturun

CodePush’ın durumunu ve kullanıcıya ilerlemeyi göstermek için destekleri alın. Bunları ikinci adımdan bir kancayla alacaksınız.

const CodePushLoading: FC<CodePushLoadingProps> = ({
header = 'Downloading',
subHeader = 'general_codePush_codePush_text',
progress = '0%',
}) => {
return (
<View>
<Text label={header} variant={'title3'} />
<Space size={12} />
<Text label={subHeader} variant={'body6'} />
<Space size={24} />
<ActivityIndicator color={colors.darkGrey} size="large" />
<Space size={24} />
<Text label={progress} variant={'body4'} />
</View>
);
};

export default CodePushLoading;

2. CodePush’u kontrol etmek için bir kanca oluşturun

Bu kancada iki parametre döndüreceksiniz; mesaj ve ilerleme. Bunları aşağıda görebilirsiniz;

Mesaj için, kullanıcının geçerli durumunu göstermek üzere SyncStatus’u kontrol edeceksiniz

import { useEffect, useState } from 'react';

import SplashScreen from 'react-native-bootsplash';
import codePush, { DownloadProgress } from 'react-native-code-push';

interface UseCodePushReturn {
syncMessage?: string;
progress?: string;
}

const useCodePush = (isLoading: boolean): UseCodePushReturn => {
const [syncMessage, setSyncMessage] = useState<string>();
const [progress, setProgress] = useState<string>();

const syncStatusChangedCallback = (syncStatus: codePush.SyncStatus) => {
switch (syncStatus) {
case codePush.SyncStatus.CHECKING_FOR_UPDATE:
setSyncMessage('Checking for update...');
break;
case codePush.SyncStatus.DOWNLOADING_PACKAGE:
setSyncMessage('Downloading update...');
break;
case codePush.SyncStatus.AWAITING_USER_ACTION:
setSyncMessage('User waiting...');
break;
case codePush.SyncStatus.INSTALLING_UPDATE:
setSyncMessage('Loading update...');
break;
case codePush.SyncStatus.UP_TO_DATE:
setSyncMessage('The app is up to date...');
break;
case codePush.SyncStatus.UPDATE_IGNORED:
setSyncMessage('Update canceled by user...');
break;
case codePush.SyncStatus.UPDATE_INSTALLED:
setSyncMessage('Update installed, Application restarting...');
break;
case codePush.SyncStatus.UNKNOWN_ERROR:
setSyncMessage('An error occurred during the update...');
break;
default:
setSyncMessage(undefined);
break;
}
};

const downloadProgressCallback = ({ receivedBytes, totalBytes }: DownloadProgress) => {
const currentProgress = Math.round((receivedBytes / totalBytes) * 100);
setProgress(`${currentProgress} %`);
};

useEffect(() => {
if (!isLoading) {
SplashScreen.hide({ fade: true, duration: 360 });
if (!__DEV__) {
codePush.notifyAppReady();
codePush.checkForUpdate().then(update => {
if (update) {
codePush.sync(
{ installMode: codePush.InstallMode.IMMEDIATE },
syncStatusChangedCallback,
downloadProgressCallback,
);
}
});
}
}
}, [isLoading]);

return {
syncMessage,
progress,
};
};

export default useCodePush;

3. Bundan sonra uygulamanın ana dosyasını çağırmanız gerekir. App.ts

İlk olarak, az önce yazdığınız kancayı çağırın.


const { progress, syncMessage } = useCodePush(isLocalizationLoading || isAppUpdateLoading);

sonra “CodePushLoading.tsx”i koşullu olarak çağırın;

progress || syncMessage ? (
<CodePushLoading progress={progress} subHeader={syncMessage} />
) : (
//Example
<Navigation />
)

İşte bu kadar. CodePush kurulumunu tamamladınız.

Şimdi CodePush’a güncellemelerin nasıl gönderileceğini öğrenelim;

Uygulama merkezinin sol panelinde, “Dağıt” altında “CodePush” bağlantısına tıklayın

Uygulamayı oluşturun. Sağ üstte “Staging” seçilidir. İhtiyacınıza göre “Production”a geçmek isterseniz.

Tüm değişiklikleriniz bittikten sonra terminalde aşağıdaki betiği çalıştırın.

appcenter codepush release-react -a mahir/testIos -d Production -m

Tİşte bu kadar. JS paketiniz App Center bulutuna gönderilir. “-m” işaretini kullandığınız için kullanıcılara anında hizmet verir, yani zorunludur. Kullanıcılar bir sonraki başlatmada güncellemeleri indirecektir.

Not: Sürümler çok önemlidir. “Hedef Sürüm” ile eşleşmezlerse kullanıcılar indirmeleri göremez.

Sonraki Adım…

CodePush’un En İyi Uygulamaları Nelerdir?

  1. Kapsamlı Test: CodePush güncelleme sürecini basitleştirse de, kapsamlı testler şarttır. Olası sorunları kullanıcılarınıza ulaşmadan önce tespit etmek için güncellemeleri her zaman bir hazırlık ortamında test edin.
  2. CodePush Anahtarlarını Güvende Tutun: Yetkisiz güncellemeleri önlemek için App Center API anahtarınız güvenli bir şekilde saklanmalıdır. Uygulamanıza sabit bir şekilde kodlamayın; bunun yerine ortam değişkenleri veya güvenli bir depolama çözümü kullanın.
  3. Sürümleme: Kullanıcıların doğru sürümleri aldığından emin olmak için güncellemeleriniz için net bir sürümleme stratejisi uygulayın.
  4. Kullanıcılarla İletişim Kurun: Güncellemeler mevcut olduğunda kullanıcıları bilgilendirin ve güncellemelerin faydalarını açıklayarak onları güncellemeye teşvik edin.

Sonuç

Günümüzün hızlı tempolu geliştirme dünyasında, uygulamalarımızın kullanıcılarımıza herhangi bir kesinti yaşatmadan güncel kalmasını sağlamak son derece önemlidir. CodePush, React Native geliştiricilerinin bu hedefe ulaşmaları için paha biçilmez bir araç sunar. Kusursuz entegrasyonu ve anında güncelleme sunma yeteneği sayesinde uygulama güncelleme sürecini basitleştirerek hem geliştiriciler hem de kullanıcılar için daha sorunsuz bir deneyim sunar. Bu kılavuzda incelediğimiz gibi, CodePush’ı uygulamak kolaydır ve esneklik ve duyarlılık açısından sunduğu avantajlar yadsınamaz. İster deneyimli bir geliştirici olun, ister React Native’e yeni başlıyor olun, CodePush’ı iş akışınıza entegre etmeyi düşünün. Sağladığı kolaylık, güncellemeleri sunma ve uygulamanızı yönetme biçiminizde devrim yaratabilir. Unutmayın, mobil uygulamalar alanında kullanıcı deneyimi her şeyden önemlidir ve bu deneyimi geliştirebilecek bir araç, ağırlığınca altın değerindedir.

Yazar: Mahir Uslu

Yalın İş Analizi Nedir?

Yalın İş Analizi, yazılımda kademeli iyileştirmeler yaparak ve müşteri geri bildirimlerini erken ve sık yakalayarak verimliliği artırmaya odaklanır. Bu, ürün geliştirme döngüsündeki israfı en aza indirir. Yalın İş Analizi, ayrıntılı planlamadan ziyade deney yapmaya öncelik verir ve sürekli, kademeli iyileştirmeyi kutlar. Geleneksel İş Analizine eşlik eden bürokrasinin çoğunu ortadan kaldırır.*

Genel Bakış:

Soru 1: Neden kademeli iyileştirmeler yapmamız ve müşteri geri bildirimlerini erken almamız gerekiyor?

şağıdaki meşhur görsel bunu kolayca açıklayabilir. Projenin küçük parçalarını ve gereksinimlerini düzenli olarak geliştirip test edersek ve her adımda müşteri geri bildirimi alırsak doğru yolda olduğumuzu göreceğiz.

Soru 2: Ürün geliştirme döngüsünde israfı neden en aza indirmeliyiz?

Cevap projenin maliyeti olacaktır. En önemli hedef, proje tamamlandığında müşterinin kullanacağı gerekli ihtiyaç ve talepleri karşılamaktır.

Aslında bu, Yalın yaklaşımın temellerinden biridir. Henry Ford’un 1913’te seri üretimi artırmak için Yalın Üretim sistemine geçmesinden sonra, Eiji Toyoda 1950’lerde bu sistematiği bir adım daha ileri götürerek bugünkü haline gelmesine katkıda bulunmuştur. Temel prensipleri arasında “Üretim ve diğer süreçlerde gereksiz kaynak tüketimini ortadan kaldıran (kuruluşa değer katmayan) bir yaklaşım” başlıklı makale yer almaktadır.

Soru 3: Ayrıntılı planlama yerine neden deney yapmaya öncelik vermeliyiz?

Cevap zaman olacaktır. Agile ve Lean düşünceyi ayrıntılı gereksinim keşfi, analizi ve kabul testiyle birlikte yazılım geliştirme sürecinize uygulamak, BT gereksinim tanımlama sürecinin hızla gelişmesine yardımcı olacaktır.

Analiz süreçlerinde, uzun araştırmalar ve planlar sonucunda anlamlı çıktılar üreten kapsamlı kullanıcı hikayeleri yerine, küçük ve anlamlı parçaları bir araya getiren küçük kapsamlı kullanıcı hikayeleriyle daha hızlı ilerleme desteklenir.

Soru 4: Geleneksel İş Analizine eşlik eden bürokrasinin çoğunu neden ortadan kaldırmamız gerekiyor?

Sürekli değişen bir dünyada, cevabı gereksinimlerin sürekli değiştiğini kabul ederek bulabiliriz. Örneğin, geleneksel iş analizi modellerinden biri olan şelale yöntemini geliştirmek aşağıdaki sorunlara yol açabilir:

· Gereksinimin yanlış anlaşılması

· Gereksinimin yanlış analizi

· Gereksinimin zaman içinde değişmesi

Ancak Yalın analiz yaklaşımıyla bu sorunların birçoğunu erken aşamada tespit edip önlemek mümkündür.

Soru 5: Nasıl Çalışır?

· Kendi işini organize edebilen ve iletişime açık bir ekibe sahip olun.

· Diğer en önemli şeylerden biri de minimum uygulanabilir ürün (MVP) belirlemektir ve bir PBL kullanıcı hikayelerini ve kabul kriterlerini açıkça belirtir.

· Yalın Düşünceyi Uygulayın en önemli temellerden biridir. Bu nedenle, Yalın yaklaşımı uygulayarak yukarıdaki soru ve cevap içeriğinde ortaya çıkabilecek çok fazla zaman kaybını önlüyoruz.

· Geri bildirim alın. Sürekli test yapmak ve Ürün sahibinden ve müşterilerden geri bildirim almak doğru yolda olduğumuzu anlamamıza yardımcı olacaktır.

Sonuç:

Hızla değişen bir dünyada, geleneksel yaklaşımlarımızı da değiştirmeliyiz.

Her işletmenin doğası gereği zaman ve maliyetin en önemli belirleyiciler olduğunu unutmadan, yalın analiz yaklaşımını her türlü geçerli gereksinim için kullanabiliriz.

Genellikle sadık kaldığımız bu yöntemde, 5n1k gibi yöntemlerle kendimize uygun analiz modelleri oluşturabilir ve ihtiyaç analizlerini daha hızlı gerçekleştirebiliriz. Yukarıda sorgulanan tüm konular, ihtiyacı doğru anlamak, gereksiz maliyetleri en aza indirmek ve faydalı çıktılar üretmektir.

Analiz, geliştirme süreçlerinin erken aşamalarından biri olduğu için çok önemlidir. Yanlış bir analizin yanlış bir geliştirmeye, yanlış bir teste ve sonuç olarak kabul edilemez bir iş gereksinimine yol açacağını unutmadan, doğru ve anlaşılır yalın analizlerle ilerlemenin her zaman önemli olduğunu unutmamalıyız.

Referanslar:

· businessanalysisexperts.com :An Overview of Lean / Agile Business Analysis

Yazar: Pınar Candan

Son yıllarda çeşitli kolaylıkları nedeniyle tüketiciler arasında popülerliği artan dijital cüzdanlar yani e-cüzdanlar, kağıt para ve plastik kart gibi geleneksel ödeme yöntemlerinin yerini alarak dijital dönüşümün önemli bir parçası haline gelirken, kullanıcıların dijital platformlar üzerinden finansal işlemlerini hızlı, güvenli ve kolay bir şekilde gerçekleştirmelerine olanak sağlıyor.

E-cüzdan nedir?

E-cüzdan, kullanıcıların banka ve kredi kartları, banka hesapları ve hatta kripto paralar gibi çeşitli ödeme yöntemlerini dijital olarak depolayarak ödeme yapmalarına ve para transferi yapmalarına olanak tanıyan ön ödemeli bir hesap olarak hizmet eder. Türkiye’deki e-cüzdan sağlayıcıları Türkiye Cumhuriyet Merkez Bankası’na bağlıdır ve yayınladığı düzenlemelere tabidir.

Nasıl çalışır?

Kullanıcı öncelikle telefon numarası veya e-posta yoluyla kayıt olmalıdır. Ardından, kullanıcı kişisel bilgileriyle veya genellikle NFC tarama ve yüz tanıma özellikli kimlik kartı doğrulamasını içeren bir KYC (Müşterinizi Tanıyın) süreciyle doğrulanır. Birçok cüzdan sağlayıcısı, kullanıcılarının uygulamayı herhangi bir doğrulama olmadan bazı kısıtlamalarla kullanmalarına izin verir. İşlem tutarı ve sunulan özelliklere erişim sınırlamaları, kullanıcının doğrulama sürecinden geçip geçmemesine bakılmaksızın farklılık gösterebilir.

Kullanıcı daha sonra banka hesabını dijital cüzdana, doğrudan bağlayarak veya cüzdan sağlayıcısı tarafından yeni bir cüzdan oluşturulmasını onaylayarak bağlar. Bağlandıktan sonra, hesaba eklenen tüm paralar cüzdan bakiyesine yansıtılır. Kullanıcılar banka hesaplarından para yükleyebilir veya kredi ya da banka kartlarını kullanabilirler. Kullanıcılar ayrıca, gelecekteki işlemler için e-cüzdanlarına yatırarak bağlı bankalardan kredi başvurusunda bulunabilir ve kredi alabilirler. Her iki durumda da dijital cüzdanlar, kart ve banka hesabı bilgilerinin yanı sıra kişisel verilerin güvenli bir şekilde saklanmasını ve genellikle ilgili verilerin şifrelenerek aktarılmasını sağlar.

Kullanıcılar artık e-cüzdanları aracılığıyla hızlı, güvenli ve zahmetsiz bir şekilde nakit iadesi kazanırken ürün satın alabilir, faturalarını ödeyebilir, diğer hesaplara para aktarabilir veya sigorta ödemesi yapabilir. Hizmetler genellikle ücretsizdir veya minimum işlem ücretiyle sunulur, bu da kullanıcılara uygun fiyatlı bir seçenek sunar. Kalan bakiye her zaman banka hesabına gönderilebilir, bu kullanıcının tercihine bağlıdır.

Innovance’de E-cüzdan Çözümleri

Innovance’ın sunduğu e-cüzdan çözümlerini incelediğimizde, Türkiye’de dijital cüzdanların popülerliğine katkıda bulunan teşvikleri tespit edebiliyoruz.

Ölçeklenebilirlik: Innovance’de, mikroservis mimarisi üzerine yapılandırılmış her e-cüzdan projesi, benzersiz ölçeklenebilirlik ve çeviklik sağlayarak 1 milyon son kullanıcıya ulaşmakta ve etkileyici bir günlük aktif kullanıcı sayısına (15.000) ulaşmaktadır. Teknolojideki uzmanlığımız bize kapsamlı bir uzmanlık sağlarken, portföyümüz ön planda birinci elden deneyim sunmaktadır. En bilinen e-cüzdan projelerimizden bazıları şunlardır: Vodafone Pay, Hayhay, Poca, Easycep ve Başkent Kart. İnovasyon ve büyümeye olan bağlılığımızı yansıtan daha fazla proje devam etmektedir.

Hızlı Piyasaya Çıkış Süresi: Beyaz etiketli çözümlerimizde bulunan modüler özellik seti ve duyarlı çerçeve ile özel olarak hazırlanmış çözümler kullanılarak, yeni bir çok dilli e-cüzdan projesi özelleştirilebilir ve iki aydan kısa bir sürede App Store, Google Play Store ve App Gallery gibi dijital dağıtım platformlarına hızla tanıtılabilir.

Güvenli ve Emniyetli: Cüzdan sağlayıcıları kullanıcıların güvenine dayandığından, iyi tanımlanmış güvenlik önlemleri sunuyoruz. Dijital cüzdan çözümlerimiz, güvenlik ihlali riskini azaltmak için dolandırıcılık ve tokenleştirmeyi azaltmak amacıyla entegre iki faktörlü kimlik doğrulama sunar. Portföyümüzdeki her cüzdan projesi, siber güvenlik uzmanlarının güvenlik açıklarını tespit etmek için gerçek dünya saldırılarını simüle ettiği bir süreç olan penetrasyon testinden geçer. Bu titiz yaklaşım, sistemlerimiz hakkında derinlemesine bir anlayış sağlamanın yanı sıra dijital cüzdanlarımızın güvenlik duruşunu da güçlendirir.

Kullanışlı ve Hızlı: E-cüzdanlar mobil cihazlar üzerinden temassız işlemler sunarak kullanıcıların ATM’lerden para çekmelerine, para yüklemelerine, ödeme yapmalarına ve yalnızca bir QR kodunu tarayarak veya alıcı bilgilerini girerek sorunsuz eşler arası (P2P) transferler gerçekleştirmelerine olanak tanır. Ayrıca, e-cüzdanlar doğrudan platform üzerinden ortak bankalardan kişisel kredi hizmetlerine erişim sağlayarak kullanıcıların Hayhay projesinde olduğu gibi anında kredi başvurusunda bulunmalarını ve kredi almalarını sağlar. Bu özellik kullanıcıların kredi verilen tutarlara doğrudan e-cüzdanlarından rahatça erişmelerini ve harcamalarını sağlayarak platform yardımcı programını geliştirir.

Sadakat İadesi: E-cüzdanlar, kullanıcıları platformu kullanarak alışveriş yapmaya teşvik etmek için genellikle sadakat programları ve geri ödeme ödüllerini bir araya getirir. Kullanıcılar, e-cüzdanla yaptıkları her işlem için puan veya geri ödeme kazanabilirler. Örneğin, kullanıcılar Poca’da olduğu gibi e-cüzdanlarını kullanarak yakıt alışverişi yaptıklarında puan veya geri ödeme ödülleri kazanabilirler. Bu ödüller, yakıta harcanan tutara göre birikir ve kullanıcılar bunları gelecekteki alışverişlerinde geri ödeme olarak kullanarak işlemlerinde tasarruf sağlayabilirler.

Promosyonlar ve İndirimler: E-cüzdan sağlayıcıları, platformları üzerinden ödeme yapmayı seçen kullanıcılara özel promosyonlar ve indirimler sunmak için tüccarlarla iş birliği yapar. Bu teşvikler, ürün veya hizmetlerde özel indirimlerden bonus ödüllerine ve sınırlı süreli tekliflere kadar uzanır. Örneğin, bir e-cüzdan sağlayıcısı, Poca’nın sunduğu kampanyalarda olduğu gibi, belirtilen süre içinde platform üzerinden yapılan her işlemde geri ödeme iadeleri sunan Anneler Günü için bir kampanya tanımlayabilir.

Sigorta veya Fatura Ödeme: Başkent Kart ve Vodafone Pay gibi bazı e-cüzdanlar, kullanıcıların sigorta primlerini veya elektrik veya telefon faturaları gibi faturaları doğrudan uygulama üzerinden ödemelerine de olanak tanır. Kullanıcılar ödeme bilgilerini e-cüzdanda güvenli bir şekilde saklayabilir ve faturalar veya abonelikler için tekrarlayan ödemeler ayarlayabilir, ödeme sürecini kolaylaştırabilir ve zamanında ödeme yapılmasını sağlayabilir.

E-cüzdanlar, gelişmiş güvenlik protokollerinden cazip ödüllere kadar çeşitli avantajlar sunarak, işlem yönetimini yeniden tanımlarken kullanıcı deneyimini modern bir şekilde zenginleştiriyor. Innovance’ın yenilikçi çözümleri, ölçeklenebilirlik, hızlı dağıtım, güçlü güvenlik ve kullanışlı modüler özellikler sunarak benimsenmelerini hızlandırdı. Teknoloji geliştikçe, e-cüzdanlar dijital finansın geleceğini şekillendirmeye devam edecek.

Yazar: Melis Ergen

SwiftUI için bir başlangıç ​​noktası arıyorsanız doğru yerdesiniz!

Ortak Görünüm Bileşenleri ve Özellikleri

Similar to UIKit, some of the most used UI components exist in SwiftUI. UIKit’e benzer şekilde en çok kullanılan UI bileşenlerinin bir kısmı SwiftUI’da da bulunmaktadır.

Text

Text is equivalent to UILabel.Text(“Hello World!”)
.font(.title.bold())
.foregroundStyle(.blue)

Text

Button

As you guessed, Button is equivalent to UIButton.Button {
print(“Button Action”)
} label: {
Text(“Hello World!”)
.font(.title.bold())
.foregroundStyle(.white)
.padding()
.background(.blue)
.clipShape(RoundedRectangle(cornerRadius: 16))
}

Button

Image

As you might expect, Image is equivalent to UIImageView.Image(systemName: “house.fill”)
.resizable()
.scaledToFit()
.foregroundStyle(.blue)

Image

TextField

TextField equals to UITextField.TextField(“placeholder”, text: .constant(“”))
.textFieldStyle(.roundedBorder)

TextField

HStack & VStack

Uygulamanızın kullanıcı arayüzünü yapılandırmaya gelince, görünümleri birbirleriyle hizalamak önemlidir.

SwiftUI’de bu amaç için iki temel düzen oluşturucu vardır: HStack ve VStack.

Bu düzen oluşturucular, görünümleri sırasıyla yatay ve dikey olarak düzenlemenize olanak tanır.

Ayrıca daha karmaşık düzenler elde etmek için bunları birleştirebilirsiniz.

HStack

HStack aligns views horizontally.HStack {
Text(“Leading Text”)
.font(.body.bold())
.foregroundStyle(.blue)

Text(“Trailing Text”)
.font(.caption.bold())
.foregroundStyle(.orange)
}

HStack

VStack

It aligns views vertically.VStack {
Text(“Top Text”)
.font(.body.bold())
.foregroundStyle(.blue)

Text(“Bottom Text”)
.font(.caption.bold())
.foregroundStyle(.orange)
}

VStack

Görünümler Arası İlişki: Spacer ile Esnek Kullanıcı Arayüzü

Spacer, SwiftUI’nin esnek kullanıcı arayüzleri oluşturmak için kullandığı hafif ama güçlü bir bileşendir.

Bildiğiniz gibi, sabit kenar boşlukları (önde, üstte, arkada, altta) kullanarak bir görünümü diğerine hizalamak aşırı derecede zahmetli olabilir.HStack {
Text(“Leading Text”)
.font(.body.bold())
.foregroundStyle(.blue)

Spacer()

Text(“Trailing Text”)
.font(.caption.bold())
.foregroundStyle(.orange)
}

Spacer in HStack

Bir HStack’te iki Metin arasına bir Spacer yerleştirildiğinde, tasarlandığı gibi Metinleri doğal olarak kenarlara doğru iter.HStack {
Spacer()

Text(“Leading Text”)
.font(.body.bold())
.foregroundStyle(.blue)

Spacer()

Text(“Trailing Text”)
.font(.caption.bold())
.foregroundStyle(.orange)

Spacer()
Spacer()
}

I Öncü Metinden önce bir tane daha Boşluk İşareti ve Soncu Metinden sonra iki tane daha Boşluk İşareti ekleyin.

More Spacers in HStack

Ara Parçalar eklerken, Öncü Metin ön kenarından bir Ara Parça ile, Soncu Metin ise arka kenarından iki Ara Parça ile uzaklaştırılır.

Sonuç olarak, Soncu Metin, Öncü Metne kıyasla cihaz kenarından daha uzakta kalır.

Veri Listesiyle Çalışma

Veri listesi konusunda SwiftUI’da List ve Foreach olmak üzere iki seçenek bulunmaktadır.

List

List equals to UITableView in UIKit.var numbers = [1, 2, 3, 4, 5]

List(numbers, id: .self) { number in
Text(“(number)”)
}

List

This is pure simple!

List also has some prepared UI such as divider, card-looking, etc.

Foreach

var numbers = [1, 2, 3, 4, 5]

VStack {
ForEach(numbers, id: .self) { number in
Text(“(number)”)
}
}

Foreach

Foreach yapısı, List bileşenine daha yalın bir alternatif sunar. Foreach ile liste kullanıcı arayüzünüzü oluşturma konusunda tam kontrole sahip olursunuz ve bu da daha basit ve daha özelleştirilebilir bir yaklaşımla sonuçlanır.

Gözlemlenebilir Özellik ile Arayüz Güncelleme

SwiftUI, Bildirimsel Programlama yaklaşımını benimsemesiyle UIKit’ten farklıdır.

Bildirimsel Programlamada, kullanıcı arayüzü gözlemlenebilir bir değer veya özellikteki değişiklikleri gözlemler.

Değer değiştiğinde, kullanıcı arayüzü değişikliği yansıtacak şekilde dinamik olarak ayarlanır.

SwiftUI’nin temel özellik sarmalayıcıları olan Durum ve Binding, gözlemlenebilirliği mümkün kılar:

Durum: Tek yönlü bağlantıyı kolaylaştırır ve öncelikli olarak ilişkili görünüm içinde kullanılır.

Bağlayıcı: İki yönlü bir bağlantı kurar ve Durum özelliklerini başka bir görünüme iletmek için kullanılır.

Şimdilik sadece Durum’a odaklanalım

@State var text: String = “Initial Text”

VStack(spacing: 32) {
Button {
text = “Edited Change”
} label: {
Text(“Change Text”)
.font(.title.bold())
.foregroundStyle(.white)
.padding()
.background(.blue)
.clipShape(RoundedRectangle(cornerRadius: 16))
}

Text(text)
.font(.body.bold())
.foregroundStyle(.blue)
}

State

Metni Değiştir düğmesi eylemi gözlemlenebilir metin özelliğini değiştirir. Kullanıcı arayüzü metin özelliğindeki değişiklikleri dinlemek üzere tasarlandığından, otomatik olarak kendini günceller. Bu işlevsellik, Durum özelliği sarmalayıcısı tarafından mümkün kılınır.

Görünüm

Her SwiftUI görünümü, Görünüm(view) protokolüne uyan bir yapıdır.

Yapılar sınıf kalıtımına izin vermediğinden, SwiftUI görünümleri yalnızca protokollere uyabilir.

Bu özellikler, SwiftUI’deki görünümlerin bağımsız ve benzersiz olduğu bir yaklaşımın benimsenmesini gerektirir.

UIKit’te, UIViewController ve UITableViewController gibi belirli görünümler için temel sınıflar oluşturmak yaygın bir uygulamadır. Bu alışkanlıktan kurtulmak zor olsa da, zihniyette bir değişiklikle mümkündür!

Yararlı Bileşenler

SwiftUI’nin temel ilkelerinden biri daha az kod, daha çok iş.

Geliştirmeyi kolaylaştırmak için kullanıma hazır bazı görünüm bileşenleri var.

Etiket (Label)

HStack.Label’da Görüntü ve Metnin bir karışımıdır. (“I am a Label”, systemImage: “house.fill”)

Label

Toplayıcı (Picker)

UISegmentedControl ve UIPickerView’ın birleşik versiyonudur.

Wheel, inline, segmented ve palette gibi çeşitli stilleri vardır.let numbers = [1, 2, 3, 4, 5]
@State var selection: Int = 0

Picker(“Select”, selection: $selection) {
ForEach(numbers, id: .self) { number in
Text(“(number)”)
}
}
.pickerStyle(.inline)

Picker

Görüntü Ölçeği

SwiftUI’nin başlangıcından bu yana Apple, SF Symbols adlı görüntü kütüphanesini sağladı. Görüntü görünümünü kullanarak bu görüntülere kütüphaneden zahmetsizce erişebilirsiniz.

Ayrıca, bir Metin görünümü için yazı tipini ayarlamaya benzer şekilde, yazı tipi işlevini kullanarak görüntüyü ölçekleme esnekliğine sahipsiniz.Image(systemName: “house.fill”)
.font(.largeTitle)

SwiftUI, Apple ortamında projeler geliştirmenin yeni bir yoludur.

Düşüncenizi bir şekilde SwiftUI’nin yoluna uyarlarsınız.

Bunu başardığınızda, SwiftUI’nin kapıları sizin için tamamen açık olacaktır!

Yazar: Yusuf Demirci

Günümüz iş dünyasında, birçok işletme uygun fiyatlı çözümlerle satış performansını artırmaya yönelik stratejileri aktif olarak takip etmektedir. Şimdi Al, Sonra Öde (BNPL), müşterilere faizsiz kredi, komisyonsuz işlem ve esnek ödeme seçenekleri sunan öne çıkan bir seçenek olarak ortaya çıkmıştır. Hızlı ve sorunsuz işlemleri kolaylaştırarak ve tüketicilere artan satın alma gücü sağlayarak BNPL, yalnızca modern alışverişçilerin değişen taleplerini karşılamakla kalmayıp aynı zamanda işletmeler için satış hacimlerinde önemli artışlar da sağlamaktadır.

BNPL Nedir?

Şimdi satın al, sonra öde (BNPL), tüketicilerin satın alımlar yapmalarına ve bunları zaman içinde ödemelerine olanak tanıyan bir finansman türüdür. Müşterilerin peşin nakit, banka veya kredi kartıyla tam fiyatı ödemek zorunda kalmadan aylık bütçelerinin ötesinde harcama yapmalarını sağlar. Bunu yaparak, müşteriler satın alımlarını hemen finanse edebilir ve bunları zaman içinde sabit taksitlerle geri ödeyebilirler.

Tüccarlar, tüccarlar ve sağlayıcılar arasındaki anlaşmalara bağlı olarak finansmanı yönetmek zorunda kalmadan ürünün tam ödemesini önceden alırlar. BNPL tarafından sağlanan ödeme kolaylığı nedeniyle satışlarının büyümesine tanık olurlar. BNPL sağlayıcıları, müşterilerin sigortalanmasını, taksitlerin yönetilmesini ve ödemelerin toplanmasını üstlenir, böylece ek faiz ve ücretler doğrudan bu firmalara gider. Bu kazan-kazan durumu, tüketicilere yalnızca ödeme kolaylığı sağlamakla kalmaz, aynı zamanda pazarı harekete geçirerek satış rakamlarını da artırır.

Nasıl çalışır?

BNPL hizmetleri genellikle ödeme sürecinde kredi kartları ve diğer ödeme yöntemleriyle birlikte bir seçenek olarak sunulur. Müşteriler bir satın alma işlemi yaparken ödeme formunda bir BNPL sağlayıcı seçer ve ardından bir hesap oluşturmak veya oturum açmak için sağlayıcının web sitesine veya uygulamasına yönlendirilir. Satın alma işlemi tamamlandıktan sonra, işletmeler tam ödemeyi önceden alır, ancak bazı anlaşmalar ödeme koşullarını uzatabilir. Müşteriler daha sonra taksitlerini doğrudan BNPL sağlayıcısına öderler; bu, faiz ve ücretleri içerebilir.

Müşteriler çeşitli nedenlerle BNPL’yi bir ödeme yöntemi olarak tercih ediyor: kredi kartı veya nakite ihtiyaç duymadan mağazada anında ödeme yapma olanağı, hızlı ve güvenli hesap kurulumu, sorunsuz ve güvenli taksit ödemeleri ve çeşitli sektörlerde uygulanabilirliği.

Innovance’de BNPL Çözümleri

Innovance olarak, 200’den fazla projede kanıtlanmış sektör deneyimimiz ve uzman ekibimizle, BNPL çözümleriyle size destek olmak için buradayız. Innovance, müşteri kabulünden kredi ödemelerine kadar tüm süreçleri kapsayan uçtan uca bir BNPL çözümü sunan bir çözüm ortağı olarak hizmet vermektedir. Ayrıca, özel gereksinimleri karşılayabilen uzman bir ekip tarafından yönetilen hızlı entegrasyon ve kurulum süreçleri de sunmaktadır.

Temel Özellikler

Innovance, bu süreçleri kolaylaştırarak farklı iş ihtiyaçlarına göre uyarlanmış, verimli ve esnek bir arka ofis yönetimi sağlıyor.

Ek Avantajlar

Neden Innovance’ı Seçmelisiniz?

Innovance, BNPL gibi yenilikçi uygun fiyatlı çözümlerle satış stratejilerinde devrim yaratmayı hedefleyen işletmeler için birinci sınıf bir ortak olarak ortaya çıkıyor. Mükemmelliğe adanmış Innovance, kusursuz müşteri katılım deneyimleri, hızlandırılmış entegrasyon süreçleri ve benzersiz ihtiyaçları karşılamaya hazır yetenekli bir uzman ekibi sunar.

Yazarlar: Ekinsel Akça & Ceren Eryılmaz

Sürekli gelişen Avrupa finans dünyasında, geleneksel bankalar ve finans kuruluşları benzeri görülmemiş bir zorlukla karşı karşıya: Rekabet gücünü korumak ve teknoloji meraklısı müşterilerin artan taleplerini karşılamak için hizmetlerini modernize etme ve kolaylaştırma ihtiyacı. İşte karşınızda, finans kuruluşlarını benzersiz verimlilik ve özelleştirmeyle dijital çağa taşımak için tasarlanmış, çığır açan bir çözüm olan Innovance’ın son teknoloji bankacılık platformu.

Dijital Dönüşüme Acil İhtiyaç Duyulmasının Anlaşılması

Finans sektörü kritik bir dönüm noktasında. Hızlı teknolojik gelişmeler ve değişen tüketici beklentileriyle birlikte, bankaların operasyonel modellerini yeniden gözden geçirmesi gerekiyor. Tek tip bir yaklaşımın yeterli olduğu günler geride kaldı. Günümüz tüketicileri, değişen ihtiyaçlarına hızla uyum sağlayabilen, kusursuz ve kişiselleştirilmiş bankacılık deneyimleri talep ediyor.

Avrupa finans kuruluşları, daha iyi verimlilik ve müşteri memnuniyeti için hizmetlerini geliştirme baskısı altında. Dijital dönüşüm çabası yalnızca bir trend değil, aynı zamanda bir zorunluluk. Mevcut ve rakip bankalar, yüksek performans, hızlı pazara sunma süresi ve en iyi teknolojileri sorunsuz bir şekilde entegre etme yeteneği sunan kapsamlı çözümlere acil ihtiyaç duyuyor.

Dönüşüme İhtiyaç

Finans sektörü giderek daha fazla dijitalleştikçe, esnek, uçtan uca bankacılık çözümlerine olan talep hiç olmadığı kadar yüksek. Finans kuruluşları şunları yapmanın yollarını arıyor:

  1. Verimliliği Artırın: Doğrudan İşlem (STP) teknolojisinden yararlanarak maliyetleri düşürmek ve hizmet sunumunu iyileştirmek için operasyonları kolaylaştırın.
  2. Müşteri Memnuniyetini Artırın: Kusursuz ve kullanıcı dostu bir bankacılık deneyimi sunun.
  3. Rekabetçi Kalın: Hızla değişen bir pazarda güncel kalmak için dijital dönüşümü benimseyin.
  4. En İyi Teknolojileri Entegre Edin: Birleştirilebilir çözümler aracılığıyla yüksek performanslı, kişiye özel hizmetler sunun.

Innovance’ten Modüler Bankacılık Platformu: Bankacılıkta Yeni Dönem

Innovance, bu ihtiyaçları tam olarak karşılamak üzere tasarlanmış kapsamlı bir bankacılık çözümü sunar. Her finans kuruluşunun kendine özgü ihtiyaçlarına göre uyarlanabilen, tamamen uyarlanabilir ve bütünleşik bir bankacılık ekosistemi sunar.

Innovance Bankacılık Platformunun Temel Faydaları

Finans kuruluşları, kendilerine özgü uçtan uca bir bankacılık hizmeti oluşturmak için çeşitli en iyi çözümleri entegre edebilirler. İster temel bankacılık, ister KYC, ister ödemeler veya kartlar olsun, Innovance Platformu çok çeşitli tedarikçiler için kullanıma hazır adaptörler sunar. Bu esneklik, bankaların iş hedefleri ve müşteri beklentileriyle mükemmel uyum sağlayan, yüksek performanslı ve özelleştirilmiş hizmetler sunabilmelerini sağlar.

Innovance çözümünün merkezinde güçlü bir ara yazılım platformu yer alır. Genel ve özel bulutlar arasında kusursuz entegrasyon için tasarlanmış olup, bankacılık sistemleriniz ve harici hizmet sağlayıcılarınız arasında sağlam bir soyutlama katmanı görevi görür. Bu ölçeklenebilir ara yazılım, KYC hizmetleri, çekirdek bankacılık sistemleri, ödeme ağ geçitleri veya kart ağları gibi çeşitli bankacılık bileşenleri arasında operasyonları aksatmadan kusursuz entegrasyona olanak tanır. Sistemlerinizi her bir sağlayıcının özelliklerinden ayırarak, Innovance ara yazılımı bankanızın tak ve çalıştır bir şekilde bileşenleri kolayca değiştirebilmesini ve dolayısıyla sürekli gelişen bir teknolojik ortamda çevik, ölçeklenebilir ve geleceğe hazır kalmasını sağlar.

Innovance’ın platformu, eşsiz esneklik ve ölçeklenebilirlik sunmak için bulut tabanlı teknolojilerin gücünden yararlanır. Bulutu benimseyerek, finansal kuruluşlar operasyonlarını zahmetsizce ölçeklendirebilir ve yoğun zamanlarda artan iş yüklerini idare edebilirler. Dahası, bulut tabanlı çözümler, finans sektöründe kritik öneme sahip olan gelişmiş güvenlik ve güvenilirlik sağlar.

Rekabetçi bankacılık sektöründe zaman çok önemlidir. Innovance, kullanıma hazır adaptörleri sayesinde hızlı kurulum imkanı sunarak bu sorunu çözer. Bu adaptörler, farklı temel bankacılık sistemleri, KYC çözümleri, ödeme ağ geçitleri ve kart sağlayıcılarıyla hızlı entegrasyonu kolaylaştırır. Bu, bankaların pazara daha hızlı girebileceği ve uzun geliştirme döngüleri olmadan müşterilerine yeni hizmet ve özellikler sunabileceği anlamına gelir.

Günümüzün mobil öncelikli dünyasında, güçlü bir mobil bankacılık uygulaması artık isteğe bağlı değil, olmazsa olmaz. Innovance platformu, belirli iş ihtiyaçlarına ve istenen kullanıcı deneyimine göre uyarlanabilen bir mobil bankacılık uygulaması içeriyor. Bu beyaz etiketli çözüm, bankaların müşterilerine kusursuz, sezgisel ve kişiselleştirilmiş bir mobil bankacılık deneyimi sunmasını sağlıyor. İster hesap yönetimi, ister ödeme yapma, ister müşteri desteğine erişim olsun, mobil uygulama tüm temel bankacılık işlevlerini kapsıyor.

Finansal ortam sürekli değişiyor ve bankalar da bu değişime ayak uydurabilecek çözümlere ihtiyaç duyuyor. Innovance’ın esnek mimarisi, bankaların yeni teknolojilere ve piyasa taleplerine kolayca uyum sağlamasını mümkün kılıyor. Esnek ve bulut tabanlı tasarımı, bankaların yeni teknolojilere ve değişen piyasa taleplerine hızla uyum sağlamasını sağlayarak, hızla değişen bir sektörde uzun vadeli sürdürülebilirlik ve rekabet gücü sağlıyor.

Son olarak, Innovance’ın çözümü müşteri memnuniyetini artırmayı hedefliyor. Kapsamlı, tedarikçi bağımsız ve ölçeklenebilir bir bankacılık ekosistemi sağlayarak, finans kuruluşları müşteri beklentilerini karşılayan ve aşan üstün hizmetler sunabilir. Sonuç olarak, artan müşteri sadakati, daha yüksek etkileşim ve nihayetinde daha yüksek kârlılık elde ederler.

Geleceğe Giden Yol

Avrupa finans kurumları dijital dönüşüm yolunda ilerlerken, Innovance’ın bileşenli bankacılık platformu gibi çözümler kritik bir rol oynayacak. Tamamen özelleştirilebilir, ölçeklenebilir ve bileşenli bir ekosistem sunan Innovance, bankaların modern finans dünyasının taleplerini doğrudan karşılamalarını sağlıyor. Mesele sadece rekabetçi kalmak değil; aynı zamanda öncü olmak.

Bankacılık Hizmetlerinizi Dönüştürmeye Hazır mısınız?

Bankacılık hizmetlerinizde devrim yaratmayı hedefleyen bir finans kuruluşuysanız, Innovance dijital dönüşümde en iyi ortağınızdır. Bu uçtan uca çözümün eğrinin önünde kalmanıza ve müşterilerinize olağanüstü değer sunmanıza nasıl yardımcı olabileceğini keşfedin.

Bugün Innovance ile iletişime geçerek, onların birleştirilebilir bankacılık ekosistemi hakkında daha fazla bilgi edinin ve bankacılıkta daha parlak, daha verimli bir geleceğe doğru ilk adımı atın.

GPU, Çoklu Görünüm Gömme ve Daha Fazlasıyla Yeni Olanakların Ortaya Çıkması

Flutter 3.24, uygulama geliştirmeyi bir üst seviyeye taşıyan bir dizi heyecan verici güncelleme sunuyor. Bu sürümle geliştiriciler, gelişmiş grafikler, web uygulamaları için çoklu görünüm yerleştirme ve video reklamlarından para kazanma desteği için Flutter GPU’ya erişim kazanıyor. Bu güçlü araçlar, çok yönlü ve yüksek performanslı uygulamalar oluşturmanıza yardımcı olmak üzere tasarlandı.

Flutter GPU:

Flutter GPU’nun önizlemesi, geliştiricilerin karmaşık 2B ve 3B sahneleri doğrudan Flutter uygulamaları içinde işlemelerine olanak tanıyan gelişmiş grafik yetenekleri sunar. Bu özellik, Impeller işleme arka ucunu gerektirir ve şu anda iOS, macOS ve Android’de desteklenmektedir. Flutter GPU, henüz erken aşamalarında olsa da, desteği tüm platformlara yaymayı hedeflemektedir ve bu da onu görsel açıdan zengin uygulamalar oluşturan geliştiriciler için paha biçilmez bir varlık haline getirir.

Çoklu Görünüm Yerleştirme:

Bu özellik, web uygulamalarının farklı HTML öğelerine aynı anda birden fazla Flutter görünümü yerleştirmesine olanak tanır. Çoklu görünüm moduyla, geliştiriciler dinamik olarak görünüm ekleyebilir veya kaldırabilir, böylece daha esnek ve etkileşimli web deneyimleri sağlayabilir. Özellikle Flutter’ı bağımsız Flutter görünümleri gerektiren daha büyük, daha karmaşık web sistemlerine entegre etmek için kullanışlıdır.

Video Reklam Para Kazanma:

Flutter artık yeni Etkileşimli Medya Reklamları (IMA) eklentisiyle video reklam gelirini destekliyor ve geliştiricilerin video reklamlarını uygulamalarına sorunsuz bir şekilde entegre etmelerini ve yeni gelir akışlarının kilidini açmalarını sağlıyor.

İlk sürüm, Android ve iOS’ta ön gösterim reklamlarını destekliyor ve yakın gelecekte orta gösterim reklamlarına da genişletilmesi planlanıyor.

Yeni Parçalar ve Widget’lar:

Bu sürüm, dinamik uygulama çubuklarının oluşturulmasını kolaylaştırmak için PinnedHeaderSliver ve SliverResizingHeader gibi yeni sliver’lar sunuyor. Ayrıca, Material kitaplığındaki yeni CarouselView widget’ı, geliştiricilerin öğelerin konumlarına göre dinamik olarak yeniden boyutlandırıldığı kaydırmalı listeler oluşturmalarına olanak tanıyor.

Cupertino Kütüphanesi Güncellemeleri:

Cupertino kütüphanesi, gelişmiş dokunsal geri bildirim ve CupertinoButton ve CupertinoTextField için iyileştirilmiş özelleştirme seçenekleri sunarak önemli güncellemelerden geçti. Bu değişiklikler, Flutter’ın iOS bileşenlerini görünüm ve işlevsellik açısından yerel benzerlerine daha da yaklaştırıyor.

Görsel kaynağı: https://medium.com/flutter/whats-new-in-flutter-3-24-6c040f87d1e4

Gelişmiş Geliştirici Araçları:

DevTools paketi, geliştiricilerin widget yeniden yapılandırmalarını takip etmelerine yardımcı olan bir özellik olan Rebuild Stats’ın eklenmesi de dahil olmak üzere önemli iyileştirmeler aldı. Bu özellik, performans darboğazlarını belirlemeye yardımcı olarak geliştiricilerin uygulamalarını daha etkili bir şekilde optimize etmelerine olanak tanır.

Görsel kaynağı: https://medium.com/flutter/whats-new-in-flutter-3-24-6c040f87d1e4

Swift Paket Yöneticisi Desteği:

Flutter artık Swift Paket Yöneticisi için erken destek sunarak iOS ve macOS bağımlılıklarının yönetimini kolaylaştırıyor. Bu entegrasyon, Flutter eklentilerinin büyüyen Swift paketleri ekosisteminden yararlanmasını sağlayarak Apple platformları için kurulum sürecini basitleştiriyor.

Görsel kaynağı: https://medium.com/@GetInRhythm/a-comprehensive-introduction-to-swift-package-manager-20d248ec0066

Gelişmiş Performans:

Bu güncelleme, Impeller motorunda daha iyi metin işleme ve küçültülmüş görseller için iyileştirilmiş varsayılan ayarlar gibi önemli performans iyileştirmeleri sunarak uygulamaların çok çeşitli cihazlarda sorunsuz çalışmasını sağlar.

Flutter 3.24, geliştiricilerin daha dinamik, görsel olarak ilgi çekici ve yüksek performanslı uygulamalar oluşturmasını sağlayan güçlü yeni özellikler sunarak Flutter’ın evriminde önemli bir dönüm noktasıdır. İster bir oyun, ister karmaşık bir web uygulaması veya geleneksel bir mobil uygulama geliştiriyor olun, Flutter 3.24 vizyonunuzu hayata geçirmek için gereken araçları ve esnekliği sağlar.

Yazar: Burak Dümer

Geleceğin Finansal Sistemine Yönelik Bir Vizyon

Nisan 2024’te, Uluslararası Ödemeler Bankası (BIS), Başkanı Agustín Carstens’ın hem işbirlikçi hem de birbirine bağlı bir gelecek finansal sisteme olan ihtiyacı vurguladığı içgörü dolu bir makale yayınladı. Küresel finansal sistemler geliştikçe, birbirine bağlı ve erişilebilir bir platforma olan ihtiyaç her zamankinden daha acil hale geliyor.

Bu blog, “Finansal İnternet” kavramını inceliyor ve bu vizyonu teşvik etmenin finansal ekosistem için neden önemli olduğunu vurguluyor. Varlıkların aracılar olmadan anında sınırlar ötesine transfer edildiğini hayal edin. Bu, finansal işlemlerinizi nasıl değiştirirdi?

Finternet nedir ve neden şu anda buna ihtiyacımız var?

Finternet, BIS tarafından ortaya atılan yeni bir finans kavramıdır. İnternete benzer şekilde, bireyleri ve işletmeleri finansal yaşamlarının merkezine yerleştirerek güçlendirmek için tasarlanmış, birbiriyle bağlantılı birden fazla finansal ekosistem öngörür (Carstens ve Nilekani, 2024). Özünde, ödemeleri, tasarrufları, borçlanmayı, yatırımları, sigortayı ve daha fazlasını kapsayan “finans dünyasının interneti”dir.

Finternet’in temel vizyonu, finansal katılımı artırmak, kişiselleştirilmiş hizmetler sunmak ve son kullanıcılar için maliyetleri azaltırken hem hızı hem de güvenilirliği iyileştirmektir. Bu vizyonun merkezinde insanların ihtiyaçları ve zorlukları vardır; bunlar olmadan inovasyon gereksiz olurdu.

Günümüzün finans sistemi hâlâ büyük ölçüde eski sistemlere dayanmaktadır. Birçok finans sisteminin ön yüzleri iyi, ancak arka yüzleri eski ve kusurludur. Ön yüzleri iyi olmasına rağmen, bu sistemler uzun süreçler, güvenlik açıkları, kırılgan performans ve manuel bağımlılıklar gibi sorunlarla boğuşmaktadır. Bu sorunlar, yavaş işlemlere, yüksek maliyetlere ve kötü bir kullanıcı deneyimine yol açarak, finansal hizmetlerde erişilebilirliği ve kapsayıcılığı olumsuz etkilemektedir.

Özellikle Gelişmekte Olan Piyasalar ve Gelişmekte Olan Ekonomiler’de (GYOE), banka hesabı olmayan ve bankacılık hizmetlerinden yeterince yararlanamayan kesimlerin karşılaştığı zorluk, düşük finansal okuryazarlık nedeniyle daha da artmaktadır. Birçoğu yalnızca nakit paraya bağımlıdır ve arkadaşlarından, ailelerinden veya tefecilerden yüksek faiz oranlarıyla borç almaktadır. Yatırım planları, sigorta veya resmi tasarruf seçenekleri olmadan, paraları genellikle “yastık altında” kalmaktadır. Finansal hizmetlere erişimdeki bu eksiklik, gelirlerini artırma, becerilerini geliştirme ve dijital ekonomiye tam olarak katılma becerilerini engellemektedir.

Bu varsayım nedeniyle, finansın geleceği için uluslararası ve daha geniş bir vizyona ihtiyacımız var ve bu da Finternet. Bu vizyona göre, bireyler ve işletmeler istedikleri finansal varlığı, istedikleri miktarda, istedikleri zaman, istedikleri cihazı kullanarak, dünyanın herhangi bir yerindeki herhangi birine aktarabilecekler. Finansal işlemler ucuz, güvenli ve neredeyse anında gerçekleşecek (Carstens ve Nilekani, 2024). Gelişen teknolojiyle, bu vizyonu gerçeğe dönüştürmek artık her zamankinden daha mümkün.

Bireyler farkında olsun ya da olmasın, Finternet’i kurmak için artan çabalar var. Son yıllarda, fintech firmaları yenilikçi çözümlerle sektörü canlandırarak geleneksel bankalara ve brokerlara olan bağımlılığı azalttı ve daha dinamik bir rekabet ortamı yarattı. Yapay zeka uygulaması henüz erken aşamalarında olsa da, Müşterini Tanı (KYC) gibi süreçleri önemli ölçüde kolaylaştırdı. Ortaya çıkan açık bankacılık ve para transferi uygulamaları, geleneksel finansal hizmetlere kıyasla daha keyifli bir kullanıcı deneyimi sunuyor. Ancak bu gelişmeler sınırlı ve yaklaşık 1,4 milyar insan hâlâ finansal sistemin dışında. Temel zorluk, finansal sistemin parçalanmış unsurlarını birleştirmek için araçlar geliştirmek. Tüm bu çabalara rağmen, finansal ekosistemin parçalanmış yapısı önemli bir zorluk olmaya devam ediyor.

Resim 1 — BIS’ten alınan Finternet’in üst düzey mimarisi

Bu nedenle, gelişmekte olan ekonominin taleplerini etkili bir şekilde karşılamak için finansal sistemin geleceği için daha geniş kapsamlı, iş birlikçi ve kapsamlı bir vizyon benimsemek esastır. Bu gelecekteki finansal sistem, birleşik defterler tarafından desteklenen token tabanlı olacaktır. Tokenleştirme, programlanabilir bir platformda bulunan finansal veya gerçek varlıkların dijital bir temsilinin oluşturulmasını içerir (Aldasoro vd., 2023). Bu süreç, bir finansal varlığın işlemi için gerekli tüm bilgilerin (sahiplik, kurallar ve transferleri yöneten mantık gibi) tek bir konumda bulunması nedeniyle ikisi arasındaki ayrımı ortadan kaldırır. Tokenleştirilmiş finansal varlıkların benimsenmesi, finansal sistemde şu anda mevcut olan birçok darboğazı hafifletme potansiyeline sahiptir. Finternet’in yapısı, bir dizi yapı taşı olarak kavramsallaştırılabilir (Resim 1). Birleşik defterler, merkez ve ticari banka parasının dijital temsillerini ve diğer tokenleştirilmiş finansal varlıkları içerir. Bireyler ve işletmeler, mobil veya web uygulamaları aracılığıyla defterlerle her zaman her yerde etkileşim kurabilirler. Uygulama Programlama Arayüzleri (API’ler), bu defterler ile Finternet dışında faaliyet gösteren finansal sistemin diğer bileşenleri arasındaki bağlantıyı kolaylaştırabilir (Carstens ve Nilekani, 2024).

Birleşik Defter Nedir?

Birleşik Defter (UL), tokenleştirilmiş varlıkları düzenli, erişilebilir ve güvenli bir şekilde yönetmek üzere tasarlanmış finansal araçlar için bir platform görevi görür. Coğrafi bölgelerin, ülkelerin, toplumların, toplulukların, kurumların ve daha fazlasının değişen ihtiyaçlarını karşılamak için çok sayıda UL oluşturulabilir. Her UL’nin benzersiz bir kimliği vardır ve döviz, hisse senedi, hisse senedi, mevduat, gayrimenkul, telif hakları ve sanat eserleri gibi çeşitli tokenleştirilmiş varlıkları yönetebilir. Bu UL’lerin her biri, İnternet’in TCP/IP’sine (İletim Kontrol Protokolü / İnternet Protokolü) benzer şekilde, Birleşik Muhasebe Protokolü’nü (UILP) kullanabilir.

Resim 2 — BIS’ten alınan birleşik bir defterdeki varlık transferleri

Birleşik Defterlerin iki temel özelliği vardır. Birincisi, finansal varlıklar, sahiplik kayıtları, kurallar ve diğer önemli bilgiler gibi finansal işlemleri tamamlamak için gereken her şeyi tek bir yerde bir araya getirirler. İkincisi, para ve diğer finansal varlıklar, defterlerde yürütülebilir nesneler olarak saklanır, yani önceden programlanmış “akıllı sözleşmeler” kullanılarak elektronik olarak aktarılabilirler (Carstens & Nilekani, 2024).

Birleşik defterlerin temel özelliklerinin ayrıntılı bir şekilde incelenmesi, programlanabilirlik, akıllı sözleşmeler, token’lar ve hesap yönetimi gibi çeşitli bileşenlerin dikkatlice incelenmesini gerektirir. Aşağıda, birleşik defterlerin mimari şeması bulunmaktadır.

Resim 3 — BIS’ten alınan birleşik defterler için mimari diyagramı

Birleşik defterler ve tokenleştirme kavramını daha iyi anlamak için çeşitli kullanım durumlarını ele alabiliriz. Örneğin, aracı kurumunuzun veya bankanızın mobil uygulamasından tercih ettiğiniz hisse senedinin bir payını satın almak istiyorsanız, ancak hisse senedi fiyatının mevcut yatırım tutarınızdan önemli ölçüde yüksek olduğunu fark ederseniz, yeterli bakiyeniz olana kadar beklemeniz gerekebilir. Ancak, bu bekleme süresi boyunca fiyatlar yükselmeye devam edebileceğinden fırsatları kaçırma riskiyle karşı karşıya kalırsınız. Aracı kurumunuzun uygulaması aracılığıyla erişilebilen birleşik defterlerdeki tokenleştirilmiş varlıklarla, uzun bir bekleme süresi olmadan kesirli hisseler satın alabilirsiniz. Bu yaklaşım, küçük yatırımcılar için yatırım fırsatlarını demokratikleştirerek, sınırlı meblağlarla servet oluşturmalarını ve geleceklerini güvence altına almalarını sağlar.

Finternet Vizyonunun Gerçekleştirilmesinde Yenilikçiliğin Rolü Nedir?

Dijital dönüşümde lider bir kuruluş olan Innovance, Finternet vizyonunu hayata geçirmeye yardımcı olmak için yeni nesil ürünler ve son teknoloji hizmetler geliştiriyor. Sadece çözümler üretmekle kalmıyor, aynı zamanda müşterilerimizin finansın geleceğinin ön saflarında yer almasını sağlıyoruz.

Dijital Dönüşüm

Geleceği bugünden yakalamanıza yardımcı olmakta öncüyüz.

Dijital Uygulamalar

İhtiyaçlarınıza en uygun ve doğru çözümleri sunan uygulamaları geliştirmek için özenle çalışıyoruz.

Teknoloji Danışmanlığı

Öncü uzmanlığımızı ve bilgi birikimimizi paylaşarak, benzersiz zorluklarınıza yönelik etkili, özel çözümler sunuyoruz.

Veri Danışmanlığı

Verilerinizden en değerli içgörüleri elde etmenizi sağlıyoruz.

Tasarım Stüdyosu

Kullanıcıyı merkeze koyan benzersiz tasarımlar ve deneyimler yaratıyoruz.

Innovance’da, inovasyon marka kimliğimizin merkezinde yer alır. En son teknolojilere ve düzenleyici ortamlara sürekli uyum sağlayarak, finansın geleceğine giden yolu açıyor ve kendimizi Finternet vizyonuyla uyumlu hale getiriyoruz. Dinamik ekibimiz yolculuğun her adımında size rehberlik etmek için burada.

Sonuç

Bu yazı, Finternet konseptini ve mevcut finansal sistemlerin sınırlamalarını nasıl ele aldığını başarıyla sunuyor. Innovance’ın inovasyona olan bağlılığı, öncü çözümler ve hizmetler sunarak bu geleceği şekillendirmede kritik bir rol oynamamızı sağlıyor.

Anahtar Kelimeler: ödeme sistemleri, finansal sistem, finansal aracılar, finansal araçlar, para birimi, dijital inovasyon, birleşik defterler, tokenleştirme, Innovance

Kaynaklar

Carstens, A., & Nilekani, N. (2024, April). Finternet: the financial system for the future. Bank for International Settlements: https://www.bis.org/publ/work1178.htm

Aldasoro, I, S Doerr, L Gambacorta, P Koo-Wilkens, and R Garratt (2023): “The tokenisation continuum”, BIS Bulletin, no 72.

Yazar: Berk Üstünel

Anlık bildirimler, işletmelerin zamanında güncellemeler, uyarılar ve teklifler göndererek kullanıcılarla etkileşim kurmasını sağlayan modern mobil uygulamaların temel bir özelliğidir. React Native’de, Firebase Cloud Messaging (FCM) anlık bildirimler göndermek için kullanılabilir. React-native-firebase ve Notifee’nin yardımıyla, bu özelliği uygulamak daha basit ve güçlü hale gelir.

Bu yazımızda, React Native projenizde Firebase Cloud Messaging’i kurma sürecini adım adım anlatacağım. Uygulamanızın buluttan gönderilen mesajlara uygun şekilde yanıt verebilmesini sağlayarak gelen anlık bildirimleri nasıl ele alacağınızı öğreneceksiniz. İster uyarılar, ister güncellemeler veya kişiselleştirilmiş içerikler gönderiyor olun, Firebase Cloud Messaging kullanıcılarınızın etkileşimde kalmasını ve bilgilendirilmesini sağlamanıza yardımcı olacak sağlam bir çözüm sunar. React Native’deki anlık bildirimler dünyasına dalalım ve uygulamanızın kullanıcı deneyimini geliştirmek için FCM’nin potansiyelini ortaya çıkaralım.

”Bizi bekleyen hayata sahip olabilmek için planladığımız hayattan vazgeçmeye istekli olmalıyız.”— Joseph Campbell

Firebase Cloud Messaging, geliştiricilerin iOS, Android ve web uygulamaları dahil olmak üzere çeşitli platformlardaki kullanıcılara mesaj ve bildirim göndermelerine olanak tanıyan bulut tabanlı bir hizmettir. FCM’nin yeteneklerinden yararlanarak, kullanıcılarınıza kişiselleştirilmiş ve zamanında içerik sunabilir ve uygulamanızla ilgili genel deneyimlerini geliştirebilirsiniz.


Önkoşullar

Başlamadan önce, aşağıdakilere sahip olduğunuzdan emin olun:

•Firebase projesi yapılandırılmış (eğer yapılandırılmamışsa, Firebase Konsolundan bir tane oluşturun).

•React Native ve Firebase hakkında temel bilgi.

•Node.js ve npm yükleyin.

•Bir React Native uygulaması kurun.

İhtiyacımız olanı elde etmek için öncelikle bazı bağımlılıkları yüklememiz gerekiyor. Bunun için 3 farklı kütüphane kullanacağız.

Bildirim izinlerini almak ve yönetmek için kullanılan kütüphane: react-native-permissions

Firebase ve Firebase bulut mesajlaşma entegrasyonu için kullanılan kütüphane: react-native-firebase

Bildirimleri almak ve görüntülemek için kullanılan kütüphane: notifee/react-native

yarn add @react-native-firebase/app 

@react-native-firebase/messaging 

react-native-permissions 

@notifee/react-native 

ioscd ios/ && pod install dizininde Firebase’ı yapılandırın

iOS için Firebase’ı yapılandırmak için şunları yapmanız gerekir:

Firebase iOS SDK’sını ekleyin

iOS Proje Ayarlarını Değiştirin

  1. Dağıtım Hedefini Belirleyin

Xcode’da dağıtım hedefini 11.0 veya daha yüksek bir sürüme ayarlayın. Bu, Firebase Mesajlaşma ve Notifee için gereklidir.

  1. Anlık Bildirimleri Etkinleştirin

AppDelegate.m’yi güncelleyin

AppDelegate.m’yi açın ve Firebase ve Notifee bildirimlerini destekleyecek şekilde değiştirin:

  1. Firebase ve Notifee’yi içe aktarın

AppDelegate.m’nin en üstüne şunu ekleyin, add:#import <Firebase.h> 
#import <RNCPushNotificationIOS.h> 

  1. Firebase’ı yapılandırın

didFinishLaunchingWithOptions yönteminde Firebase’ı başlatın: – (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { 
[FIRApp configure]; 
return YES; 
}

Android’de Firebase’ı yapılandırın

android/build.gradle dosyasını şu şekilde değiştirerek değiştirin:

google-services.json dosyanızı (Firebase Konsolundan) android/app klasörünüze ekleyin.

classpath ‘com.google.gms:google-services:4.3.10’

apply plugin: ‘com.google.gms.google-services’

Firebase Cloud Messaging’i (FCM) Ayarlama

  1. Firebase konsoluna gidin ve oturum açın/kayıt olun.
  2. “Proje ekle” düğmesine tıklayarak bir proje ekleyin ve projeye bir ad verin.
  3. Adımları izleyin ve bir proje oluşturun.
  4. Projeyi başarıyla oluşturdunuz. Şimdi genel bakış sayfasındasınız.
  5. Hem Android hem de iOS için Firebase’a uygulama eklememiz gerekiyor.

Şimdi, anlık bildirimler göndermek için kullanıcılardan bildirim izinleri istememiz gerekiyor. Bu, mesajlaşma modülü kullanılarak yapılabilir. ‘@react-native-firebase/messaging’ adresinden iletileri içe aktarın;

async function requestUserPermission() { 

const authStatus = await messaging().requestPermission(); 

const enabled = 

authStatus === messaging.AuthorizationStatus.AUTHORIZED || 

authStatus === messaging.AuthorizationStatus.PROVISIONAL; 

if (enabled) { 

console.log(‘Notification permission enabled.’); 

} else { 

console.log(‘Notification permission not granted.’); 

Uygulama başlatılırken requestUserPermission()’ı çağırın.

Cihazın bildirim alabilmesi için benzersiz bir token’a ihtiyacı vardır. Bu token’ı şu kodu kullanarak alabilirsiniz:import messaging from ‘@react-native-firebase/messaging’;

async function getFcmToken() { 

const token = await messaging().getToken(); 

console.log(‘FCM Token:’, token); 

useEffect(() => { 

getFcmToken(); 

}, []); 

Bu token daha sonra Firebase’den belirli cihazlara bildirim göndermek için kullanılacak.

Gelen Bildirimleri İşleme

Firebase, bildirimleri işlemek için üç senaryo sunar: uygulama ön planda, arka planda veya sonlandırılmış durumdayken.

Ön planda bildirimleri yönetmek için, uygulama etkinken özelleştirilmiş bildirimler göstermenizi sağlayan güçlü bir kütüphane olan Notifee’yi kullanacaksınız. Mesajlaşmayı ‘@react-native-firebase/messaging’ adresinden içe aktarın;

import notifee, { AndroidImportance } from ‘@notifee/react-native’; 

messaging().onMessage(async (remoteMessage) => { 

console.log(‘Message received in foreground:’, remoteMessage); 

await notifee.displayNotification({ 

title: remoteMessage.notification.title, 

body: remoteMessage.notification.body, 

android: { 

channelId: ‘default’, 

importance: AndroidImportance.HIGH, 

}, 

}); 

}); 

Notifee, resim ekleme, özel sesler ve öncelik ayarları gibi bildirimlerin özelleştirilmesine olanak tanıyarak genel bildirim deneyimini geliştirir.

Arka planda veya sonlandırılmış durumda, bildirimler sistem tarafından otomatik olarak işlenir ve bildirim tepsisinde görünür. Bunun için Firebase’in yerleşik FCM mesaj işleme özelliğini kullanabilirsiniz, bu nedenle bu durumlar için ek kod gerekmez.

Bildirim Kanallarını Yapılandırma (Android)

Android’de bildirimler kanallar aracılığıyla iletilir. Kanalları özel sesler, titreşim desenleri ve önem düzeyleriyle yapılandırabilirsiniz.

Notifee’de bir bildirim görüntülemeden önce bir kanal ayarlayın:import notifee from ‘@notifee/react-native’;

async function createNotificationChannel() { 

await notifee.createChannel({ 

id: ‘default’, 

name: ‘Default Channel’, 

importance: AndroidImportance.HIGH, 

}); 

useEffect(() => { 

createNotificationChannel(); 

}, []); 

Anlık Bildirimleri Test Etme

Firebase Konsolu’ndan Cloud Messaging bölümüne giderek ve FCM belirtecini kullanarak belirli bir cihaza mesaj göndererek test bildirimleri gönderebilirsiniz.

Notifee ayrıca bildirim etkileşimini (örneğin, kullanıcı bildirime dokunduğunda) yönetmenize de olanak tanır.

.notifee.onBackgroundEvent(async ({ type, detail }) => { 
if (type === notifee.EventType.ACTION_PRESS) { 
console.log(‘Notification tapped: ‘, detail.notification); 

}); 

Kaynaklar:

• Firebase Cloud Messaging

• React Native Firebase Documentation

• Notifee Documentation

Yazar: Mahir Uslu

Jetpack Compose ile daha iyi uygulamaları daha hızlı oluşturun.

Bu yazıda, jetpack compose’u ve jetpack compose için ortamın nasıl kurulacağını ve proje oluşturulacağını inceleyeceğiz

Genel Bakış 

Jetpack Compose, Android’in yerel kullanıcı arayüzü oluşturmak için modern araç takımıdır. Android’de kullanıcı arayüzü geliştirmeyi basitleştirir ve hızlandırır. Daha az kod, güçlü araçlar ve sezgisel Kotlin API’leriyle uygulamanızı hızla hayata geçirebilirsiniz.  

Android desteklenen tek platform değildir. Başlangıç için, Web ve Masaüstünde kullanabilirsiniz — Çok platformlu uygulamalar. 

Jetpack Compose’un Avantajları  

Jetpack Compose’un Dezavantajları 

Kurulum Talimatları 

Empty Compose Activity
Finish to Creating Compose Project
root/build.gradle
root/build.gradle
Project

Compose’daki Tema 

Jetpack Compose, dijital arayüzler oluşturmak için kapsamlı bir tasarım sistemi olan Material Design‘ın bir uygulamasını sunar. Bir Material Teması, renk, tipografi ve şekil niteliklerini içerir. Bu nitelikleri özelleştirdiğinizde, değişiklikleriniz uygulamanızı oluşturmak için kullandığınız bileşenlere otomatik olarak yansıtılır. 

@Composable
fun JetComposeDemoTheme(
darkTheme: Boolean = isSystemInDarkTheme(),
content: @Composable () -> Unit
) {
val colors = if (darkTheme) {
DarkColorPalette
} else {
LightColorPalette
}

MaterialTheme(
colors = colors,
typography = Typography,
shapes = Shapes,
content = content
)
}

Renk: Renkler, Compose’da basit bir veri tutma sınıfı olan Color sınıfıyla modellenir. Sarılmış temadaki renklerle stil oluşturmak kolaydır ve bir renge ihtiyaç duyulan her yerde temadaki değerleri kullanabilirsiniz. 

package com.developersancho.jetcomposedemo.ui.theme

import androidx.compose.ui.graphics.Color

val Purple200 = Color(0xFFBB86FC)
val Purple500 = Color(0xFF6200EE)
val Purple700 = Color(0xFF3700B3)
val Teal200 = Color(0xFF03DAC5)
private val DarkColorPalette = darkColors(
primary = Purple200,
primaryVariant = Purple700,
secondary = Teal200
)

private val LightColorPalette = lightColors(
primary = Purple500,
primaryVariant = Purple700,
secondary = Teal200

Tipografi: Material bir tip sistemi tanımlar ve sizi az sayıda semantik adlandırılmış stil kullanmaya teşvik eder. 

package com.developersancho.jetcomposedemo.ui.theme

import androidx.compose.material.Typography
import androidx.compose.ui.text.TextStyle
import androidx.compose.ui.text.font.FontFamily
import androidx.compose.ui.text.font.FontWeight
import androidx.compose.ui.unit.sp

// Set of Material typography styles to start with
val Typography = Typography(
body1 = TextStyle(
fontFamily = FontFamily.Default,
fontWeight = FontWeight.Normal,
fontSize = 16.sp
)
/* Other default text styles to override
button = TextStyle(
fontFamily = FontFamily.Default,
fontWeight = FontWeight.W500,
fontSize = 14.sp
),
caption = TextStyle(
fontFamily = FontFamily.Default,
fontWeight = FontWeight.Normal,
fontSize = 12.sp
)
*/
)

Şekil: Malzeme, büyük, orta ve küçük bileşenler için şekiller tanımlamanıza olanak tanıyan bir şekil sistemi tanımlar. 

package com.developersancho.jetcomposedemo.ui.theme

import androidx.compose.foundation.shape.RoundedCornerShape
import androidx.compose.material.Shapes
import androidx.compose.ui.unit.dp

val Shapes = Shapes(
small = RoundedCornerShape(4.dp),
medium = RoundedCornerShape(4.dp),
large = RoundedCornerShape(0.dp)
)

Compose’da MainActivity 

Jetpack compose ile geliştirmeye başlamak için, Activity veya Fragment sınıflarından  alınan bir Class’a ihtiyacımız var. 

setContent{}: Bu blok, composable işlevleri çağırdığımız activity’nin düzenini tanımlar. (xml’de “setContentView(R.layout.activity_main)’’’ gibi) 

Surface(): Malzeme yüzeyi, malzeme tasarımındaki merkezi metafordur. Her yüzey, belirli bir yükseklikte bulunur ve yüzey parçasının diğer yüzeylerle görsel olarak nasıl ilişkili olduğunu ve yüzeyin gölgeleri nasıl oluşturduğunu etkiler. 

Değiştiriciler: Geleneksel olarak kullanıcı arayüzünüzü biçimlendirmek için kullandığınız xml öznitelikleriyle karşılaştırılabilir. Uygulanan konular ve çeşitli sıralarda dolgu ve renklendirmeyi kullanarak birçok farklı kullanıcı arayüzü kombinasyonu elde edebiliriz. 

class MainActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContent {
JetComposeDemoTheme {
// A surface container using the 'background' color from the theme
Surface(
modifier = Modifier.fillMaxSize(),
color = MaterialTheme.colors.background
) {
Greeting("Innovance")
}
}
}
}
}

Text(): Ekrana bir metin görünümü koyar. Ayrıca Compose UI kütüphanesi tarafından tanımlanan fonksiyon ekranda bir metin etiketi görüntüler (örneğin “TextView” şeklinde) 

@Composable: Bu açıklama, aşağıdaki yöntemin görünümler oluşturmak için Jetpack compose kullandığını belirtir. 

@Composable
fun Greeting(name: String) {
Text(text = "Hello $name :)")
}

 @Preview: Bu açıklama stüdyonun tasarım bölümünde gösterilecek. Preview sadece geliştirme içindir, gerçek cihazda çalıştırdığımızda faydalı olmayacaktır. 

@Preview(showBackground = true)
@Composable
fun DefaultPreview() {
JetComposeDemoTheme {
Greeting("Innovance")
}
}
Preview

Son olarak 

Referanslar

Keyifli kodlamalar! 

Yazar: Mesut Genç