উত্তর:
আছে 2 নাম্বার!
বিপণন প্রকাশের সংখ্যাটি গ্রাহকদের জন্য, সংস্করণ নম্বর বলে । এটি 1.0 দিয়ে শুরু হয় এবং 2.0 , 3.0 এ বড় আপডেটগুলির জন্য 1.1 , 1.2 এ ছোটখাট আপডেটের জন্য এবং বাগ ফিক্সের জন্য 1.0.1 , 1.0.2 এ যায় । এই সংখ্যাটি রিলিজ এবং নতুন বৈশিষ্ট্যগুলিকে কেন্দ্র করে। এটি 9, 1.11.23 এ থামতে হবে না একটি যুক্তিসঙ্গত সংস্করণ নম্বর।
বিল্ড সংখ্যা বেশিরভাগই হয় অভ্যন্তরীণ সংখ্যা তৈরী করে এর যে তখন পর্যন্ত করা হয়েছে। তবে কেউ কেউ অন্যান্য নম্বর ব্যবহার করে যেমন সংগ্রহস্থলের শাখা নম্বর বা এর কমিট নম্বর। এই সংখ্যাটি বিভিন্ন বিল্ডগুলির মধ্যে পার্থক্য করার জন্য অনন্য হওয়া উচিত , যার কেবলমাত্র সামান্য বৃদ্ধি বৃদ্ধি রয়েছে।
উদ্দেশ্য গ:
NSString * appVersionString = [[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleShortVersionString"];
সুইফ্ট <3.0
let appVersionString: String = NSBundle.mainBundle().objectForInfoDictionaryKey("CFBundleShortVersionString") as! String
সুইফট ৩.০+ (৫.০ এর সাথে পরীক্ষিত):
let appVersionString: String = Bundle.main.object(forInfoDictionaryKey: "CFBundleShortVersionString") as! String
উদ্দেশ্য গ:
NSString * appBuildString = [[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleVersion"];
সুইফ্ট <3.0
let buildNumber: String = NSBundle.mainBundle().objectForInfoDictionaryKey("CFBundleVersion") as! String
সুইফট ৩.০+ (৫.০ অবধি পরীক্ষিত):
let buildNumber: String = Bundle.main.object(forInfoDictionaryKey: "CFBundleVersion") as! String
প্রথমে উপরের লাইনগুলি এবং তারপরে নিম্নলিখিতটি ব্যবহার করুন।
উদ্দেশ্য গ:
NSString * versionBuildString = [NSString stringWithFormat:@"Version: %@ (%@)", appVersionString, appBuildString];
সুইফ্ট (5.0 অবধি পরীক্ষিত):
let versionAndBuildNumber: String = "\(appVersionString) (\(buildNumber))"
মূল বান্ডেলের মানগুলি সর্বদা উপস্থিত থাকে না, উদাহরণস্বরূপ একটি কমান্ড লাইন অ্যাপ্লিকেশনটিতে কোনও হয় না CFBundleShortVersionString
বা হয় CFBundleVersion
, সুতরাং পদ্ধতিগুলি ফিরে আসবে nil
এবং এটি ক্র্যাশ হবে কারণ কোডটিতে এটি একটি ভুল ডাউনকাস্ট করে। তবে সাধারণ কোকো আইওএস এবং ম্যাক অ্যাপ্লিকেশনগুলিতে এই মানগুলি সংজ্ঞায়িত করা হয় এবং মোছা হবে না।
এটি এক্সকোড সংস্করণ 7.3 (7D175) দিয়ে পরীক্ষা করা হয় । বিল্ড নম্বর প্রায়শই প্রথম বন্ধনী / বন্ধনীতে লেখা হয়। বিল্ড নম্বর হেক্সাডেসিমাল বা দশমিক in
ইন Xcode আপনি স্বতঃ-বাড়ায় পারেন বিল্ড সংখ্যা হিসেবে দশমিক সংখ্যা নিম্নোক্ত স্থাপন দ্বারা Run script
প্রকল্প সেটিংসে বিল্ড ফেজ
#!/bin/bash
buildNumber=$(/usr/libexec/PlistBuddy -c "Print CFBundleVersion" "$INFOPLIST_FILE")
buildNumber=$(($buildNumber + 1))
/usr/libexec/PlistBuddy -c "Set :CFBundleVersion $buildNumber" "$INFOPLIST_FILE"
জন্য হেক্সাডেসিমেল বিল্ড সংখ্যা এই স্ক্রিপ্ট ব্যবহার
buildNumber=$(/usr/libexec/PlistBuddy -c "Print CFBundleVersion" "$INFOPLIST_FILE")
buildNumber=$((0x$buildNumber))
buildNumber=$(($buildNumber + 1))
buildNumber=$(printf "%X" $buildNumber)
/usr/libexec/PlistBuddy -c "Set :CFBundleVersion $buildNumber" "$INFOPLIST_FILE"
জন্য Xcode
নিচের কাজগুলো করুন:
Bundle.main.object(forInfoDictionaryKey: "...")
এখন।
আপনার প্রকল্প বা এক্সকোডে আপনাকে কোনও পরিবর্তন করার দরকার নেই। উভয়ের জন্য আলাদাভাবে সুইফট সংস্করণটি এখানে:
let versionNumber = NSBundle.mainBundle().objectForInfoDictionaryKey("CFBundleShortVersionString") as! String
let buildNumber = NSBundle.mainBundle().objectForInfoDictionaryKey("CFBundleVersion") as! String
এটি এই রেপোতে অন্তর্ভুক্ত রয়েছে, এটি পরীক্ষা করে দেখুন:
Bundle.main.object(forInfoDictionaryKey: "...")
এখন।
সুইফট 3 এর জন্য এখানে একই কোড :
let versionNumber = Bundle.main.object(forInfoDictionaryKey: "CFBundleShortVersionString") as! String
let buildNumber = Bundle.main.object(forInfoDictionaryKey: "CFBundleVersion") as! String
Bundle.main
infoDictionary
আমার জন্য একটি খালি ছিল ; সম্ভবত কারণ আমি এটি একটি কাঠামোর মধ্যে থেকে করছি, একটি এক্সিকিউটেবল বা অ্যাপ্লিকেশন নয়? Bundle(for: MyClass.self)
প্রত্যাশিত মান রয়েছে।
প্রোগ্রামগতভাবে সংস্করণ এবং বিল্ড নম্বর প্রদর্শন করুন - সুইফট ৪.০
let versionNumber = Bundle.main.object(forInfoDictionaryKey: "CFBundleShortVersionString") ?? "1.0"
let buildNumber = Bundle.main.object(forInfoDictionaryKey: "CFBundleVersion") ?? "1.0"
let versionAndBuildNumber = "Ver #\(versionNumber) ( Build #\(buildNumber) )"
আপনি যেমন ব্যবহার করতে পারেন
var appVersion: String {
//versionNumber
let versionNumber = Bundle.main.object(forInfoDictionaryKey: "CFBundleShortVersionString") ?? "1.0"
//buildNumber
let buildNumber = Bundle.main.object(forInfoDictionaryKey: "CFBundleVersion") ?? "1.0"
return "Version: #\(versionNumber) (#\(buildNumber))"
}
তারপরে আপনি বিশ্বব্যাপী ঘোষণা করার সময় আপনি যে কোনও জায়গা ব্যবহার করতে পারেন।
print(appVersion)
আউটপুট:
Version: #1.0 (#1.0.3)
আমি বান্ডিলের জন্য একটি এক্সটেনশন করেছি যাতে এটি ব্যবহার করা সহজ হবে
extension Bundle {
var releaseVersionNumber: String? {
return infoDictionary?["CFBundleShortVersionString"] as? String
}
var buildVersionNumber: String? {
return infoDictionary?["CFBundleVersion"] as? String
}
var applicationName: String {
return infoDictionary?["CFBundleDisplayName"] as? String ?? "ADKATech"
}
var applicationReleaseDate: String {
return infoDictionary?["ApplicationReleaseDate"] as? String ?? Date().description
}
var applicationReleaseNumber: Int {
return infoDictionary?["ApplicationReleaseNumber"] as? Int ?? 0
}
var releaseVersionNumberPretty: String {
return "\(releaseVersionNumber ?? "1.0.0")"
}
var buildVersionNumberPretty: String {
return "\(buildVersionNumber ?? "1")"
}
}