İzlenecek yol: iOS Swift kitaplığını bağlama
Önemli
Şu anda Xamarin platformunda özel bağlama kullanımını araştırıyoruz. Gelecekteki geliştirme çalışmalarını bilgilendirmek için lütfen bu ankete katılın.
Xamarin, mobil geliştiricilerin Visual Studio ve C# kullanarak platformlar arası yerel mobil deneyimler oluşturmasını sağlar. iOS platform SDK'sı bileşenlerini kutudan çıkararak kullanabilirsiniz. Ancak çoğu durumda, bu platform için geliştirilen ve Xamarin'in bağlamalar aracılığıyla yapmanızı sağladığı üçüncü taraf SDK'ları da kullanmak istiyorsunuz. Xamarin.iOS uygulamanıza bir üçüncü taraf Objective-C çerçevesi eklemek için uygulamalarınızda kullanabilmeniz için önce bunun için bir Xamarin.iOS bağlaması oluşturmanız gerekir.
iOS platformu, anadili ve araçlarıyla birlikte sürekli gelişmektedir ve Swift şu anda iOS geliştirme dünyasının en dinamik alanlarından biridir. Swift'e Objective-C geçirilmiş olan ve bize yeni zorluklarla karşı karşıya olan bir dizi üçüncü taraf SDK vardır. Swift bağlama işlemi ile Objective-Cbenzer olsa da, AppStore tarafından kabul edilebilir bir Xamarin.iOS uygulamasını başarıyla derlemek ve çalıştırmak için ek adımlar ve yapılandırma ayarları gerektirir.
Bu belgenin amacı, bu senaryoyu ele almak için üst düzey bir yaklaşımın ana hatlarını oluşturmak ve basit bir örnekle birlikte ayrıntılı bir adım adım kılavuz sağlamaktır.
Background
Swift ilk olarak Apple tarafından 2014'te tanıtıldı ve şimdi hızla büyüyen üçüncü taraf çerçeveler tarafından benimsenen sürüm 5.1'de. Swift çerçevesini bağlamak için birkaç seçeneğiniz vardır ve bu belgede, oluşturulan arabirim üst bilgisini kullanarak Objective-C yaklaşım özetlenmektedir. Üst bilgi, bir çerçeve oluşturulduğunda Xcode araçları tarafından otomatik olarak oluşturulur ve yönetilen dünyadan Swift dünyasına iletişim kurmanın bir yolu olarak kullanılır.
Önkoşullar
Bu kılavuzu tamamlamak için şunları yapmanız gerekir:
- Xcode
- Mac için Visual Studio
- Objective Sharpie
- AppCenter CLI (isteğe bağlı)
Yerel kitaplık oluşturma
İlk adım, üst bilgisinin etkinleştirildiği yerel bir Swift Framework Objective-C oluşturmaktır. Çerçeve genellikle üçüncü taraf bir geliştirici tarafından sağlanır ve üst bilgi şu dizinde pakete eklenmiş durumdadır: FrameworkName.framework>/Headers/<FrameworkName-Swift.h>.<
Bu üst bilgi, Xamarin.iOS bağlama meta verilerini oluşturmak ve Swift çerçevesi üyelerini kullanıma sunan C# sınıfları oluşturmak için kullanılacak genel arabirimleri kullanıma sunar. Üst bilgi yoksa veya tamamlanmamış bir genel arabirime sahipse (örneğin, sınıfları/üyeleri görmüyorsanız) iki seçeneğiniz vardır:
- Swift kaynak kodunu güncelleştirerek üst bilgiyi oluşturun ve gerekli üyeleri özniteliğiyle
@objc
işaretleyin - Ortak arabirimi denetlediğiniz ve temel alınan çerçeveye yapılan tüm çağrıları ara sunucu olarak kullandığınız bir ara sunucu çerçevesi oluşturun
Bu öğreticide, her zaman kullanılamayan üçüncü taraf kaynak koduna daha az bağımlılığı olduğu için ikinci yaklaşım açıklanmaktadır. İlk yaklaşımdan kaçınmanın bir diğer nedeni de gelecekteki çerçeve değişikliklerini desteklemek için gereken ek çabadır. Üçüncü taraf kaynak koduna değişiklik eklemeye başladıktan sonra, bu değişiklikleri desteklemek ve gelecekteki her güncelleştirmeyle birleştirmek sizin sorumluluğundadır.
Örneğin, bu öğreticide Gigya Swift SDK'sı için bir bağlama oluşturulur:
Xcode'u açın ve Xamarin.iOS kodu ile üçüncü taraf Swift çerçevesi arasında ara sunucu olacak yeni Swift çerçevesi oluşturun. Dosya > Yeni Proje'ye > tıklayın ve sihirbaz adımlarını izleyin:
Geliştirici web sitesinden Gigya xcframework'i indirin ve paketi açın. Yazma sırasında en son sürüm Gigya Swift SDK 1.5.3'tür
Proje dosyaları gezgininden SwiftFrameworkProxy'yi ve ardından Genel sekmesini seçin
Gigya.xcframework paketini Sürükleyip Genel sekmesinin altındaki Xcode Frameworks and Libraries listesine bırakın. Çerçeveyi eklerken Gerekirse öğeleri kopyala seçeneğini işaretleyin:
Swift çerçevesinin projeye eklendiğini doğrulayın, aksi takdirde aşağıdaki seçenekler kullanılamaz.
Ekleme seçeneğinin belirlendiğinden emin olun. Bu seçenek daha sonra el ile denetlenecektir:
Çerçeveye sahip Swift kitaplıklarını içeren Her Zaman Swift Standart Kitaplıklarını Ekle Ayarlar Oluştur seçeneğinin Hayır olarak ayarlandığından emin olun. Daha sonra swift dylibs'nin son pakete dahil olduğu el ile kontrol edilir:
Bit Kodunu Etkinleştir seçeneğinin Hayır olarak ayarlandığından emin olun. Şu andan itibaren Xamarin.iOS Bitcode içermezken Apple aynı mimarileri desteklemek için tüm kitaplıkları gerektirir:
Aşağıdaki terminal komutunu çerçevede çalıştırarak, sonuçta elde edilen çerçevede Bitcode seçeneğinin devre dışı bırakıldığını doğrulayabilirsiniz:
otool -l SwiftFrameworkProxy.framework/SwiftFrameworkProxy | grep __LLVM
Çıkış boş olmalıdır, aksi takdirde belirli yapılandırmanız için proje ayarlarını gözden geçirmek istersiniz.
Oluşturulan arabirim Üst Bilgi Adı seçeneğinin Objective-C etkinleştirildiğinden ve bir üst bilgi adı belirttiğinden emin olun. Varsayılan ad FrameworkName-Swift.h'dir><:
İpucu
Bu seçenek kullanılamıyorsa, önce aşağıda açıklandığı gibi projeye bir
.swift
dosya eklediğinizden emin olun, ardından öğesine dönünBuild Settings
ve ayar bulunabilir olmalıdır.İstenen yöntemleri kullanıma sunun ve öznitelikle
@objc
işaretleyin ve aşağıda tanımlanan ek kuralları uygulayın. Çerçeveyi bu adım olmadan oluşturursanız, oluşturulan Objective-C üst bilgi boş olur ve Xamarin.iOS Swift çerçevesi üyelerine erişemez. Yeni bir Swift dosyası SwiftFrameworkProxy.swift oluşturup aşağıdaki kodu tanımlayarak temel alınan Gigya Swift SDK'sı için başlatma mantığını kullanıma sunma:import Foundation import UIKit import Gigya @objc(SwiftFrameworkProxy) public class SwiftFrameworkProxy : NSObject { @objc public func initFor(apiKey: String) -> String { Gigya.sharedInstance().initFor(apiKey: apiKey) let gigyaDomain = Gigya.sharedInstance().config.apiDomain let result = "Gigya initialized with domain: \(gigyaDomain)" return result } }
Yukarıdaki kodla ilgili birkaç önemli not:
Gigya
Modülü burada özgün üçüncü taraf Gigya SDK'sından içeri aktarmak, çerçevenin herhangi bir üyesine erişim sağlar.- SwiftFrameworkProxy sınıfını
@objc
bir ad belirterek özniteliğiyle işaretleyin; aksi takdirde gibi_TtC19SwiftFrameworkProxy19SwiftFrameworkProxy
benzersiz bir okunamayan ad oluşturulur. Tür adı daha sonra adıyla kullanılacağından açıkça tanımlanmalıdır. - proxy sınıfını öğesinden
NSObject
devralır, aksi takdirde üst bilgi dosyasında oluşturulmaz Objective-C . - Kullanıma sunulacak tüm üyeleri olarak
public
işaretleyin.
Şema derleme yapılandırmasını Hata Ayıkla olan Sürüm olarak değiştirin. Bunu yapmak için Xcode > Hedef > Düzenleme Düzeni iletişim kutusunu açın ve YapılandırmaYı Derle seçeneğini Yayın olarak ayarlayın:
Bu noktada, Çerçeve oluşturulmaya hazırdır. Hem simülatör hem de cihaz mimarileri için çerçeve oluşturun ve ardından çıkışları tek bir ikili çerçeve paketi (
.xcframework
) olarak birleştirin. Aşağıdaki komutlarla derlemeyi yürütür:xcodebuild -project "Swift/SwiftFrameworkProxy/SwiftFrameworkProxy.xcodeproj" archive \ -scheme "SwiftFrameworkProxy" \ -configuration Release \ -archivePath "build/SwiftFrameworkProxy-simulator.xcarchive" \ -destination "generic/platform=iOS Simulator" \ -derivedDataPath "build" \ -IDECustomBuildProductsPath="" -IDECustomBuildIntermediatesPath="" \ ENABLE_BITCODE=NO \ SKIP_INSTALL=NO \ BUILD_LIBRARY_FOR_DISTRIBUTION=YES
xcodebuild -project "Swift/SwiftFrameworkProxy/SwiftFrameworkProxy.xcodeproj" archive \ -scheme "SwiftFrameworkProxy" \ -configuration Release \ -archivePath "build/SwiftFrameworkProxy-ios.xcarchive" \ -destination "generic/platform=iOS" \ -derivedDataPath "build" \ -IDECustomBuildProductsPath="" -IDECustomBuildIntermediatesPath="" \ ENABLE_BITCODE=NO \ SKIP_INSTALL=NO \ BUILD_LIBRARY_FOR_DISTRIBUTION=YES
İpucu
Proje yerine bir çalışma alanınız varsa, çalışma alanını derleyin ve hedefi gerekli bir parametre olarak belirtin. Çalışma alanları için bu dizin proje derlemelerinden farklı olacağı için bir çıkış dizini de belirtmek istiyorsunuz.
İpucu
Ayrıca, tüm geçerli mimariler için çerçeveyi oluşturmak için yardımcı betiği kullanabilir veya hedef seçicideki Xcode anahtarlama Simülatörü ve Cihaz'dan oluşturabilirsiniz.
Oluşturulan çerçevelere sahip iki arşiv vardır ve her platform için birer arşiv vardır ve bunları daha sonra Xamarin.iOS bağlama projesine katıştırılacak tek bir ikili çerçeve paketi olarak birleştirir. Her iki mimariyi de birleştiren bir ikili çerçeve paketi oluşturmak için aşağıdaki adımları uygulamanız gerekir. .xcarchive paketi yalnızca bir klasör olduğundan, dosyaları ekleme, kaldırma ve değiştirme gibi tüm işlem türlerini gerçekleştirebilirsiniz:
Arşivlerde önceden oluşturulmuş çerçevelerle bir
xcframework
oluşturun:xcodebuild -create-xcframework \ -framework "build/SwiftFrameworkProxy-simulator.xcarchive/Products/Library/Frameworks/SwiftFrameworkProxy.framework" \ -framework "build/SwiftFrameworkProxy-ios.xcarchive/Products/Library/Frameworks/SwiftFrameworkProxy.framework" \ -output "build/SwiftFrameworkProxy.xcframework"
İpucu
Yalnızca tek bir platformu desteklemek istiyorsanız (örneğin, yalnızca bir cihazda çalıştırabileceğiniz bir uygulama oluşturuyorsanız) .xcframework kitaplığını oluşturma adımını atlayabilir ve daha önce cihaz derlemesinden çıkış çerçevesini kullanabilirsiniz.
İpucu
Yukarıdaki tüm adımları otomatikleştiren .xcframework dosyasını oluşturmak için yardımcı betiğini de kullanabilirsiniz.
Meta verileri hazırlama
Şu anda, oluşturulan arabirim üst bilgisine Objective-C sahip .xcframework bir Xamarin.iOS bağlaması tarafından tüketilmeye hazır olmalıdır. Sonraki adım, bağlama projesi tarafından C# sınıfları oluşturmak için kullanılan API tanımı arabirimlerini hazırlamaktır. Bu tanımlar, Objective Sharpie aracı ve oluşturulan üst bilgi dosyası tarafından el ile veya otomatik olarak oluşturulabilir. Meta verileri oluşturmak için Sharpie kullanın:
Resmi indirme web sitesinden en son Objective Sharpie aracını indirin ve sihirbazı izleyerek yükleyin. Yükleme tamamlandıktan sonra sharpie komutunu çalıştırarak bunu doğrulayabilirsiniz:
sharpie -v
Sharpie ve otomatik olarak oluşturulan Objective-C üst bilgi dosyasını kullanarak meta veriler oluşturun:
sharpie bind --sdk=iphoneos16.4 --output="XamarinApiDef" --namespace="Binding" --scope="build/SwiftFrameworkProxy.xcframework/ios-arm64/SwiftFrameworkProxy.framework/Headers/" "build/SwiftFrameworkProxy.xcframework/ios-arm64/SwiftFrameworkProxy.framework/Headers/SwiftFrameworkProxy-Swift.h"
Çıkış, oluşturulan meta veri dosyasını yansıtır: ApiDefinitions.cs. Bu dosyayı yerel başvurularla birlikte bir Xamarin.iOS bağlama projesine eklemek üzere sonraki adıma kaydedin:
Parsing 1 header files... Binding... [write] ApiDefinitions.cs
Araç, kullanıma sunulan Objective-C her üye için aşağıdaki koda benzer şekilde C# meta verileri oluşturur. Gördüğünüz gibi, insan tarafından okunabilir bir biçimi ve basit üyeleri eşlemesi olduğundan el ile tanımlanabilir:
[Export ("initForApiKey:")] string InitForApiKey (string apiKey);
İpucu
Üst bilgi adı için varsayılan Xcode ayarlarını değiştirdiyseniz üst bilgi dosyası adı farklı olabilir. Varsayılan olarak , -Swift soneki olan bir projenin adına sahiptir. Çerçeve paketinin headers klasörüne giderek dosyayı ve adını her zaman deleyebilirsiniz.
İpucu
Otomasyon işleminin bir parçası olarak, .xcframework oluşturulduktan sonra meta verileri otomatik olarak oluşturmak için yardımcı betiğini kullanabilirsiniz.
Bağlama kitaplığı oluşturma
Sonraki adım, Visual Studio bağlama şablonunu kullanarak bir Xamarin.iOS bağlama projesi oluşturmak, gerekli meta verileri, yerel başvuruları eklemek ve sonra da tüketilebilir bir kitaplık oluşturmak için projeyi oluşturmaktır:
Mac için Visual Studio açın ve yeni bir Xamarin.iOS bağlama kitaplığı projesi oluşturun, bu örnekte SwiftFrameworkProxy.Binding adını verin ve sihirbazı tamamlayın. Xamarin.iOS bağlama şablonu şu yolda bulunur: iOS > Kitaplık > Bağlama Kitaplığı:
Tamamen Objective Sharpie aracı tarafından oluşturulan meta verilerle değiştirileceğinden mevcut meta veri dosyasını ApiDefinition.cs silin.
Önceki adımlardan birinde Sharpie tarafından oluşturulan meta verileri kopyalayın, özellikler penceresinde şu Derleme Eylemini seçin: ApiDefinitions.cs dosyası için ObjBindingApiDefinition ve StructsAndEnums.cs dosyası için ObjBindingCoreSource:
Meta verilerin kendisi, C# dilini kullanarak kullanıma sunulan Objective-C her sınıfı ve üyeyi açıklar. C# bildirimiyle birlikte özgün Objective-C üst bilgi tanımını da görebilirsiniz:
// @interface SwiftFrameworkProxy : NSObject [BaseType (typeof(NSObject))] interface SwiftFrameworkProxy { // -(NSString * _Nonnull)initForApiKey:(NSString * _Nonnull)apiKey __attribute__((objc_method_family("none"))) __attribute__((warn_unused_result)); [Export ("initForApiKey:")] string InitForApiKey (string apiKey); }
Geçerli bir C# kodu olsa da, olduğu gibi kullanılmaz, bunun yerine Xamarin.iOS araçları tarafından bu meta veri tanımına dayalı C# sınıfları oluşturmak için kullanılır. Sonuç olarak, SwiftFrameworkProxy arabirimi yerine Xamarin.iOS kodunuz tarafından örneği oluşturulabilen aynı ada sahip bir C# sınıfı elde edersiniz. Bu sınıf meta verileriniz tarafından tanımlanan yöntemleri, özellikleri ve diğer üyeleri alır. Bu üyeleri C# biçiminde çağıracaksınız.
Daha önce oluşturulan ikili çerçeve paketine ve bu çerçevenin her bağımlılığına yerel bir başvuru ekleyin. Bu durumda, bağlama projesine hem SwiftFrameworkProxy hem de Gigya çerçevesi yerel başvurularını ekleyin:
- Yerel çerçeve başvuruları eklemek için bulucuyu açın ve çerçeveleri içeren klasöre gidin. Çerçeveleri Çözüm Gezgini Yerel Başvurular konumuna sürükleyip bırakın. Alternatif olarak, Yerel Başvurular klasöründeki bağlam menüsü seçeneğini kullanabilir ve çerçeveleri aramak ve eklemek için Yerel Başvuru Ekle'ye tıklayabilirsiniz:
Her yerel başvurunun özelliklerini güncelleştirin ve üç önemli seçeneği işaretleyin:
- Akıllı Bağlantıyı Ayarla = true
- Zorla Yüklemeyi Ayarla = false
- Özgün çerçeveleri oluşturmak için kullanılan Çerçevelerin listesini ayarlayın. Bu durumda her çerçevenin yalnızca iki bağımlılığı vardır: Foundation ve UIKit. Bunu Çerçeveler alanına ayarlayın:
Belirteceğiniz ek bağlayıcı bayraklarınız varsa, bunları bağlayıcı bayrakları alanında ayarlayın. Bu durumda boş tutun.
Gerektiğinde ek bağlayıcı bayrakları belirtin. Bağladığınız kitaplık yalnızca Objective-C API'leri kullanıma sunarken dahili olarak Swift kullanıyorsa aşağıdaki gibi sorunlar görüyor olabilirsiniz:
error MT5209 : Native linking error : warning: Auto-Linking library not found for -lswiftCore error MT5209 : Native linking error : warning: Auto-Linking library not found for -lswiftQuartzCore error MT5209 : Native linking error : warning: Auto-Linking library not found for -lswiftCoreImage
Bağlama projesinin yerel kitaplık özelliklerinde Bağlayıcı Bayrakları'na aşağıdaki değerlerin eklenmesi gerekir:
L/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/iphonesimulator/ -L/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/iphoneos -Wl,-rpath -Wl,@executable_path/Frameworks
İlk iki seçenek (
-L ...
olanlar), yerel derleyiciye swift kitaplıklarını nerede bulacağını söyler. Yerel derleyici, doğru mimariye sahip olmayan kitaplıkları yoksayar, yani hem simülatör kitaplıkları hem de cihaz kitaplıkları için aynı anda konumu geçirmek mümkündür, böylece hem simülatör hem de cihaz derlemeleri için çalışır (bu yollar yalnızca iOS için doğrudur; tvOS ve watchOS için güncelleştirilmeleri gerekir). Bunun bir dezavantajı, bu yaklaşımın doğru Xcode'un /Application/Xcode.app içinde olmasını gerektirmesidir. Bağlama kitaplığının tüketicisinde farklı bir konumda Xcode varsa bu işlem çalışmaz. Alternatif çözüm, yürütülebilir projenin iOS Derleme seçeneklerindeki (--gcc_flags -L... -L...
) ek mtouch bağımsız değişkenlerine bu seçenekleri eklemektir. Üçüncü seçenek, yerel bağlayıcının yürütülebilir dosyadaki swift kitaplıklarının konumunu depolamasını sağlar, böylece işletim sistemi bunları bulabilir.
Son eylem, kitaplığı oluşturmak ve derleme hatası olmadığından emin olmaktır. Genellikle Objective Sharpie tarafından üretilen bağlama meta verilerinin
[Verify]
özniteliğiyle ek açıklama eklendiğini göreceksiniz. Bu öznitelikler, Objective Sharpie'nin bağlamayı özgün Objective-C bildirimle karşılaştırarak doğru şeyi yaptığını doğrulamanız gerektiğini gösterir (ilişkili bildirimin üzerindeki bir açıklamada sağlanacaktır). Özniteliğiyle işaretlenmiş üyeler hakkında daha fazla bilgi edinmek için aşağıdaki bağlantıyı kullanabilirsiniz. Proje oluşturulduktan sonra bir Xamarin.iOS uygulaması tarafından kullanılabilir.
Bağlama kitaplığını kullanma
Son adım, Xamarin.iOS bağlama kitaplığını bir Xamarin.iOS uygulamasında kullanmaktır. Yeni bir Xamarin.iOS projesi oluşturun, bağlama kitaplığına başvuru ekleyin ve Gigya Swift SDK'sını etkinleştirin:
Xamarin.iOS projesi oluşturun. Başlangıç noktası olarak iOS > Uygulaması > Tek Görünüm Uygulamasını kullanabilirsiniz:
Hedef projeye veya daha önce oluşturulan .dll bağlama projesi başvurusu ekleyin. Bağlama kitaplığını normal bir Xamarin.iOS kitaplığı olarak değerlendirin:
Uygulamanın kaynak kodunu güncelleştirin ve başlatma mantığını Gigya SDK'yı etkinleştiren birincil ViewController'a ekleyin
public override void ViewDidLoad() { base.ViewDidLoad(); var proxy = new SwiftFrameworkProxy(); var result = proxy.InitForApiKey("APIKey"); System.Diagnostics.Debug.WriteLine(result); }
BtnLogin adlı bir düğme oluşturun ve bir kimlik doğrulama akışını etkinleştirmek için aşağıdaki düğme tıklama işleyicisini ekleyin:
private void btnLogin_Tap(object sender, EventArgs e) { _proxy.LoginWithProvider(GigyaSocialProvidersProxy.Instagram, this, (result, error) => { // process your login result here }); }
Uygulamayı çalıştırın, hata ayıklama çıkışında şu satırı görmeniz gerekir:
Gigya initialized with domain: us1.gigya.com
. Kimlik doğrulama akışını etkinleştirmek için düğmeye tıklayın:
Tebrikler! Başarıyla bir Xamarin.iOS uygulaması ve Swift çerçevesi kullanan bir bağlama kitaplığı oluşturdunuz. Yukarıdaki uygulama iOS 12.2+ üzerinde başarıyla çalıştırılacaktır çünkü bu iOS sürümünden başlayarak Apple ABI kararlılığını kullanıma sunar ve 12.2+ sürümünden itibaren her iOS Swift çalışma zamanı kitaplıklarını içerir ve bu kitaplıklar uygulamanızı Swift 5.1+ ile derlenmiş olarak çalıştırmak için kullanılabilir. Önceki iOS sürümleri için destek eklemeniz gerekiyorsa, gerçekleştirmeniz gereken birkaç adım daha vardır:
iOS 12.1 ve öncesi için destek eklemek için çerçevenizi derlemek için kullanılan belirli Swift dylibs'leri göndermek istiyorsunuz. Gerekli kitaplıkları IPA'nızla işlemek ve kopyalamak için Xamarin.iOS.SwiftRuntimeSupport NuGet paketini kullanın. Hedef projenize NuGet başvurusunu ekleyin ve uygulamayı yeniden oluşturun. Başka adım gerekmez, NuGet paketi derleme işlemiyle birlikte yürütülen belirli görevleri yükler, gerekli Swift dylibs'lerini belirler ve bunları son IPA ile paketler.
Uygulamayı uygulama mağazasına göndermek için, IPA dosyasını ve SwiftSupport klasör dylibs'lerini AppStore tarafından kabul edilecek şekilde güncelleştiren Xcode ve distribute seçeneğini kullanmak istiyorsunuz:
○ Uygulamayı arşivle. Mac için Visual Studio menüsünde Yayımlama için Arşiv Oluştur'a > tıklayın:
Bu eylem projeyi oluşturur ve dağıtım için Xcode tarafından erişilebilen Düzenleyici'ye ulaşır.
○ Xcode ile dağıt. Xcode'ı açın ve Pencere > Düzenleyicisi menü seçeneğine gidin:
Önceki adımda oluşturulan arşivi seçin ve Uygulamayı Dağıt düğmesine tıklayın. Uygulamayı AppStore'a yüklemek için sihirbazı izleyin.
Bu adım isteğe bağlıdır, ancak uygulamanızın iOS 12.1 ve önceki sürümlerde ve 12.2'de çalışabildiğini doğrulamak önemlidir. Test Bulutu ve UITest çerçevesi yardımıyla bunu yapabilirsiniz. UiTest projesi ve uygulamayı çalıştıran temel bir UI testi oluşturun:
Bir UITest projesi oluşturun ve Xamarin.iOS uygulamanız için yapılandırın:
Uygulamayı çalıştırmak ve Swift SDK özelliklerinden bazılarını kullanmak için temel bir test oluşturun. Bu test uygulamayı etkinleştirir, oturum açmayı dener ve ardından iptal düğmesine basar:
[Test] public void HappyPath() { app.WaitForElement(StatusLabel); app.WaitForElement(LoginButton); app.Screenshot("App loaded."); Assert.AreEqual(app.Query(StatusLabel).FirstOrDefault().Text, "Gigya initialized with domain: us1.gigya.com"); app.Tap(LoginButton); app.WaitForElement(GigyaWebView); app.Screenshot("Login activated."); app.Tap(CancelButton); app.WaitForElement(LoginButton); app.Screenshot("Login cancelled."); }
Uygulama merkezinde bir iOS uygulaması oluşturun, testi çalıştırmak için yeni bir cihaz kümesiyle yeni bir test çalıştırması oluşturun:
Appcenter CLI'yi yükleme
npm install -g appcenter-cli
Önemli
v6.3 veya sonraki bir düğümün yüklü olduğundan emin olun
Aşağıdaki komutu kullanarak testi çalıştırın. Ayrıca appcenter komut satırınızın şu anda oturum açmış olduğundan emin olun.
appcenter test run uitest --app "Mobile-Customer-Advisory-Team/SwiftBinding.iOS" --devices a7e7cb50 --app-path "Xamarin.SingleView.ipa" --test-series "master" --locale "en_US" --build-dir "Xamarin/Xamarin.SingleView.UITests/bin/Debug/"
Sonucu doğrulayın. AppCenter portalında Uygulama Testi Testi > çalıştırmalarına > gidin:
İstediğiniz test çalıştırmasını seçip sonucu doğrulayın:
Xamarin.iOS bağlama kitaplığı aracılığıyla yerel swift çerçevesi kullanan temel bir Xamarin.iOS uygulaması geliştirdiniz. Örnek, seçilen çerçeveyi kullanmak için basit bir yol sağlar ve gerçek uygulamada daha fazla API'yi kullanıma sunmanız ve bu API'ler için meta veriler hazırlamanız gerekir. Meta veri oluşturmak için betik, çerçeve API'leri için gelecekteki değişiklikleri basitleştirir.