প্রোগ্রামের মতো আমার অ্যাপ্লিকেশনটির বিল্ড সংস্করণ পাওয়ার কোনও উপায় আছে কি? সামঞ্জস্যকরণের জন্য কিছু কোড কার্যকর করার জন্য যখন ব্যবহারকারী অ্যাপস্টোরের মাধ্যমে অ্যাপটি আপডেট করেছেন তখন আমাকে সনাক্ত করতে সক্ষম হওয়া দরকার
প্রোগ্রামের মতো আমার অ্যাপ্লিকেশনটির বিল্ড সংস্করণ পাওয়ার কোনও উপায় আছে কি? সামঞ্জস্যকরণের জন্য কিছু কোড কার্যকর করার জন্য যখন ব্যবহারকারী অ্যাপস্টোরের মাধ্যমে অ্যাপটি আপডেট করেছেন তখন আমাকে সনাক্ত করতে সক্ষম হওয়া দরকার
উত্তর:
এক্সকোড লক্ষ্য সংক্ষিপ্তসার "সংস্করণ" ক্ষেত্রে আপনি যে মানটি সেট করেছেন তা এখানে রয়েছে:
সুইফট 3
let version = Bundle.main.infoDictionary?["CFBundleShortVersionString"] as! String
ObjC
NSString *version = [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleShortVersionString"];
সুইফট 2
let version = NSBundle.mainBundle().infoDictionary?["CFBundleShortVersionString"] as! String
এবং "বিল্ড":
সুইফট 3
let build = Bundle.main.infoDictionary?[kCFBundleVersionKey as String] as? String
ObjC
NSString *build = [[[NSBundle mainBundle] infoDictionary] objectForKey:(NSString *)kCFBundleVersionKey];
সুইফট 2
let build = NSBundle.mainBundle().infoDictionary?[kCFBundleVersionKey as String] as! String
NSBundle.mainBundle()
এখনBundle.main
আপনি তথ্য অভিধানটি ব্যবহার করে দেখতে পারেন
NSDictionary *infoDictionary = [[NSBundle mainBundle]infoDictionary];
NSString *version = infoDictionary[@"CFBundleShortVersionString"];
NSString *build = infoDictionary[(NSString*)kCFBundleVersionKey];
NSString *bundleName = infoDictionary[(NSString *)kCFBundleNameKey];
যখন ব্যবহার MFMailComposeViewController
একটি "আমাদের সঙ্গে যোগাযোগ করুন" বোতামে জন্য, আমি ব্যবহারকারীর কাছ থেকে ই-মেইলে পেতে, একটি ফরম্যাট HTML এ এই কোডটি ব্যবহার করুন। এটি আমাকে সমস্ত তথ্য দেয় যা আমার যে কোনও সমস্যা সমাধানে সহায়তা করা শুরু করতে হবে:
struct utsname systemInfo;
uname(&systemInfo);
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
NSDate *date = [NSDate date];
[formatter setDateFormat:@"MM/dd/yyyy 'at' hh:mm a"];
NSString *dateString = [formatter stringFromDate:date];
CGRect screenRect = [[UIScreen mainScreen] bounds];
CGFloat screenWidth = screenRect.size.width - 65.0;
NSString *comments = NSLocalizedString(@"Please write your comments below:", nil);
NSString *build = [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleVersion"];
NSString *version = [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleShortVersionString"];
NSString *appName = [[[NSBundle mainBundle] infoDictionary] objectForKey:(NSString*)kCFBundleNameKey];
NSString *deviceModel = [NSString stringWithCString:systemInfo.machine encoding:NSUTF8StringEncoding];
NSString *iOSVersion = [[UIDevice currentDevice] systemVersion];
NSString *emailBody = [NSString stringWithFormat:@"<!DOCTYPE html><html><style> .div {background-color: lightgrey; width: %fpx; padding: 10px; border: 5px solid navy; margin: 2px;}</style><body><div class='div'><p><b>App:</b> %@</p><b><p>Device:</b> %@</p><b><p>iOS Version:</b> %@</p><b><p><p>App Version and Build:</b> %@ (%@)</p><b><p>Date:</b> %@</p> </p></div><font color='red'><b>%@</b></font><br><br></body></html>",screenWidth,appName,deviceModel,iOSVersion,version,build,dateString,comments];
[self setMessageBody:emailBody isHTML:YES];
বার্তাটি পাওয়ার সময় এটি ফলাফল:
উভয়ের জন্য আলাদাভাবে সুইফট সংস্করণ:
let versionNumber = NSBundle.mainBundle().objectForInfoDictionaryKey("CFBundleShortVersionString") as! String
let buildNumber = NSBundle.mainBundle().objectForInfoDictionaryKey("CFBundleVersion") as! String
এটি এই রেপোতে অন্তর্ভুক্ত রয়েছে, এটি পরীক্ষা করে দেখুন:
class Info {
static let dictionary = Bundle.main.infoDictionary ?? [:]
enum Value {
case build, version
}
}
extension Info.Value {
var key: String {
switch self {
case .build: return kCFBundleVersionKey as String
case .version: return kCFBundleInfoDictionaryVersionKey as String
}
}
var string: String? { return Info.dictionary[key] as? String }
}
if let value = Info.Value.version.string { print("Version: \(value)") }
if let value = Info.Value.build.string { print("Build: \(value)") }
প্রকল্প সেটিংস
আমি এই ওপেন সোর্স প্রকল্পটি অবশ্যই এই উদ্দেশ্যে লিখেছি । আমার প্রকল্পটি উল্লেখযোগ্য ইভেন্টগুলি ঘটে যখন বিজ্ঞপ্তিগুলি পোস্ট করে, যেমন কোনও ব্যবহারকারী যখন প্রথমবারের জন্য অ্যাপটি খুলবে, বা আপগ্রেড করার পরে অ্যাপটি খুলবে (ব্যবহারকারী কোন সংস্করণ থেকে আপগ্রেড হয়েছিল সে সম্পর্কিত তথ্য সহ)। উত্সটি সোজা এবং এটি বুঝতে সহজ হওয়া উচিত। আপনার যদি কোন প্রশ্ন / অনুরোধ থাকে তবে আমাকে জানান।
আমি সম্প্রতি এটি সম্পর্কে একটি ব্লগ পোস্ট লিখেছি ।
1) অ্যাপ্লিকেশন সংস্করণ পাওয়ার জন্য আপনাকে একটি ব্যবহার করতে হবে:
NSString *version = [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleShortVersionString"];
2) বিল্ড সংস্করণ পাওয়ার জন্য আপনাকে একটি ব্যবহার করতে হবে:
NSString *buildVersion = [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleVersion"];