2015-06-12 11 views
17

Merhaba GitHub'da bir iOS (SWIFT) kişisel projesi yayınlamaya çalışıyorum ama özel API anahtarlarımı ve sırlarımı herkesle paylaşmaya korkuyorum. Ben ayrıştırma kullanıyorumiOS (SWIFT) projeleri için GitHub'da API anahtarları nasıl gizlenir?

yüzden böyle benim AppDelegate şey vardır:

let applicationId = "mySecretApplicationId" 
let clientKey = "mySecretClientKey" 
Parse.setApplicationId(applicationId!, clientKey: clientKey!) 

Ben "mySecretApplicationId" ve "mySecretClientKey" gizlemek istiyorum, benim projede özel bir yer veya dizin var nerede olduğunu bu değişkenleri koyabilir?

Teşekkürler!

cevap

23

Tüm önemli anahtarlarınızı sakladığınız bir .plist dosyasını kullanabilirsiniz. Bu dosyayı .gitignore dosyanıza koymak çok önemlidir. aşağıdaki gibi enter image description here

Ve AppDelegate içinde kullanmak:

var keys: NSDictionary? 

    if let path = NSBundle.mainBundle().pathForResource("Keys", ofType: "plist") { 
     keys = NSDictionary(contentsOfFile: path) 
    } 
    if let dict = keys { 
     let applicationId = dict["parseApplicationId"] as? String 
     let clientKey = dict["parseClientKey"] as? String 

     // Initialize Parse. 
     Parse.setApplicationId(applicationId!, clientKey: clientKey!) 
    } 

SWIFT 3 Güncelleme:

if let path = Bundle.main.path(forResource: "Keys", ofType: "plist") { 
     keys = NSDictionary(contentsOfFile: path) 
    } 
+1

Senin durumunda

, bu gibi keys.plist dosyası ayarlamak gerekir Bunu yaptıktan sonra bile bu tuşların git geçmişinizde olacağı da unutulmamalıdır. Bunun üstesinden gelmek için, yalnızca ilk etapta depoda bulunmamış yeni API anahtarları oluşturun. – rpowell

+1

"Birlikte gelen kaynakları kopyala" seçeneğine dahil edilmelerini nasıl önlersiniz? Son kullanıcı hala paket içeriğini gösterip Kaynaklar klasörünün içindeki keys.plist dosyasını göremez mi? –

1

Bunları, .gitignore dosyasına eklediğiniz bir yapılandırma dosyasına koyun. Her geliştiricinin kendi yapılandırmasını oluşturmak için kullanabileceği örnek bir yapılandırma dosyasında kontrol edin.