Bu sayfa, özel Uygulama Kontrolü sağlayıcınızı kullanarak bir Apple uygulamasında Uygulama Kontrolü'nü nasıl etkinleştireceğinizi gösterir. Uygulama Kontrolü'nü etkinleştirdiğinizde projenizin Firebase kaynaklarına yalnızca uygulamanızın erişebilmesini sağlamaya yardımcı olursunuz.
Uygulama Kontrolü'nü yerleşik sağlayıcılarla kullanmak istiyorsanız Uygulama Kontrolü ile Uygulama Kontrolü ve DeviceCheck ile Uygulama Kontrolü belgelerine bakın.
Sen başlamadan önce
Henüz yapmadıysanız Firebase'i Apple projenize ekleyin .
Özel Uygulama Kontrolü sağlayıcınızın sunucu tarafı mantığını uygulayın .
1. Uygulama Kontrolü kitaplığını uygulamanıza ekleyin
Uygulama Kontrolü bağımlılığını projenizin
Podfile
ekleyin:pod 'FirebaseAppCheck'
Veya alternatif olarak Swift Paket Yöneticisini kullanabilirsiniz.
Ayrıca, güvendiğiniz Firebase hizmeti istemci kitaplıklarının en son sürümünü kullandığınızdan emin olun.
pod install
çalıştırın ve oluşturulan.xcworkspace
dosyasını açın.
2. Uygulama Kontrolü protokollerini uygulayın
Öncelikle AppCheckProvider
ve AppCheckProviderFactory
protokollerini uygulayan sınıflar oluşturmanız gerekir.
AppCheckProvider
sınıfınızın, özel Uygulama Kontrolü sağlayıcınızın orijinalliğin kanıtı olarak ihtiyaç duyduğu bilgileri toplayan ve bunu bir Uygulama Kontrolü jetonu karşılığında jeton edinme hizmetinize gönderen bir getToken(completion:)
yöntemi olmalıdır. Uygulama Kontrolü SDK'sı belirteç önbelleğe almayı yönetir, bu nedenle getToken(completion:)
uygulamanızda her zaman yeni bir belirteç alın.
Süratli
class YourCustomAppCheckProvider: NSObject, AppCheckProvider { var app: FirebaseApp init(withFirebaseApp app: FirebaseApp) { self.app = app super.init() } func getToken(completion handler: @escaping (AppCheckToken?, Error?) -> Void) { DispatchQueue.main.async { // Logic to exchange proof of authenticity for an App Check token. // ... // Create AppCheckToken object. let exp = Date(timeIntervalSince1970: expirationFromServer) let token = AppCheckToken( token: tokenFromServer, expirationDate: exp ) // Pass the token or error to the completion handler. handler(token, nil) } } }
Amaç-C
@interface YourCustomAppCheckProvider : NSObject <FIRAppCheckProvider> @property FIRApp *app; - (id)initWithApp:(FIRApp *)app; @end @implementation YourCustomAppCheckProvider - (id)initWithApp:app { self = [super init]; if (self) { self.app = app; } return self; } - (void)getTokenWithCompletion:(nonnull void (^)(FIRAppCheckToken * _Nullable, NSError * _Nullable))handler { dispatch_async(dispatch_get_main_queue(), ^{ // Logic to exchange proof of authenticity for an App Check token. // ... // Create FIRAppCheckToken object. NSTimeInterval exp = expirationFromServer; FIRAppCheckToken *token = [[FIRAppCheckToken alloc] initWithToken:tokenFromServer expirationDate:[NSDate dateWithTimeIntervalSince1970:exp]]; // Pass the token or error to the completion handler. handler(token, nil); }); } @end
Ayrıca, AppCheckProvider
uygulamanızın örneklerini oluşturan bir AppCheckProviderFactory
sınıfını uygulayın:
Süratli
class YourCustomAppCheckProviderFactory: NSObject, AppCheckProviderFactory { func createProvider(with app: FirebaseApp) -> AppCheckProvider? { return YourCustomAppCheckProvider(withFirebaseApp: app) } }
Amaç-C
@interface YourCustomAppCheckProviderFactory : NSObject <FIRAppCheckProviderFactory> @end @implementation YourCustomAppCheckProviderFactory - (nullable id<FIRAppCheckProvider>)createProviderWithApp:(FIRApp *)app { return [[YourCustomAppCheckProvider alloc] initWithApp:app]; } @end
3. Uygulama Kontrolünü Başlatın
Aşağıdaki başlatma kodunu uygulama temsilcinize veya uygulama başlatıcınıza ekleyin:
Süratli
let providerFactory = YourAppCheckProviderFactory() AppCheck.setAppCheckProviderFactory(providerFactory) FirebaseApp.configure()
Amaç-C
YourAppCheckProviderFactory *providerFactory = [[YourAppCheckProviderFactory alloc] init]; [FIRAppCheck setAppCheckProviderFactory:providerFactory]; [FIRApp configure];
Sonraki adımlar
Uygulama Kontrolü kitaplığı uygulamanıza yüklendikten sonra güncellenen uygulamayı kullanıcılarınıza dağıtmaya başlayın.
Güncellenen istemci uygulaması, Firebase'e yaptığı her istekle birlikte Uygulama Kontrolü jetonları göndermeye başlayacak, ancak Firebase ürünleri, Firebase konsolunun Uygulama Kontrolü bölümünde zorunlu kılmayı etkinleştirene kadar jetonların geçerli olmasını gerektirmeyecek.
Metrikleri izleyin ve uygulamayı etkinleştirin
Ancak yaptırımı etkinleştirmeden önce, bunu yapmanın mevcut meşru kullanıcılarınızı aksatmayacağından emin olmalısınız. Öte yandan, uygulama kaynaklarınızın şüpheli bir şekilde kullanıldığını görüyorsanız yaptırımı daha erken etkinleştirmek isteyebilirsiniz.
Bu kararı vermenize yardımcı olması için kullandığınız hizmetlere ilişkin Uygulama Kontrolü metriklerine bakabilirsiniz:
- Gerçek Zamanlı Veritabanı, Cloud Firestore, Cloud Storage ve Kimlik Doğrulaması (beta) için Uygulama Kontrolü istek ölçümlerini izleyin .
- Bulut İşlevleri için Uygulama Kontrolü istek ölçümlerini izleyin .
Uygulama Kontrolü yaptırımını etkinleştir
Uygulama Kontrolü'nün kullanıcılarınızı nasıl etkileyeceğini anladığınızda ve devam etmeye hazır olduğunuzda Uygulama Kontrolü yaptırımını etkinleştirebilirsiniz:
- Gerçek Zamanlı Veritabanı, Cloud Firestore, Cloud Storage ve Kimlik Doğrulaması (beta) için Uygulama Kontrolü uygulamasını etkinleştirin .
- Bulut İşlevleri için Uygulama Denetimi zorunlu kılmayı etkinleştirin .
Hata ayıklama ortamlarında Uygulama Kontrolü'nü kullanın
Uygulamanızı Uygulama Kontrolü için kaydettirdikten sonra uygulamanızı, geliştirme sırasındaki bir simülatör gibi Uygulama Kontrolü'nün normalde geçerli olarak sınıflandırmayacağı bir ortamda veya sürekli entegrasyon (CI) ortamında çalıştırmak istiyorsanız, Uygulamanızın, gerçek bir doğrulama sağlayıcısı yerine Uygulama Denetimi hata ayıklama sağlayıcısını kullanan bir hata ayıklama yapısı oluşturun.
Bkz. Apple platformlarında hata ayıklama sağlayıcısıyla Uygulama Kontrolü'nü kullanma .