Could someone convert this to objective c
Getting date of Provisional certificate
Getting date of Provisional certificate
Code Block language func getProvisioningProfileExpirationDate() -> Date? { self.getCertificateExpirationDate() let profilePath: String? = Bundle.main.path(forResource: "embedded", ofType: "mobileprovision") if( profilePath != nil ) { let plistData = NSData(contentsOfFile: profilePath!) let plistDataString = String(format: "%@", plistData!) var plistString: String = extractPlist(fromMobileProvisionDataString:plistDataString) let pattern = "<key>ExpirationDate</key>.*<date>(.*)</date>" let regex = try! NSRegularExpression(pattern: pattern, options: .caseInsensitive) let textCheckingResult : NSTextCheckingResult = regex.firstMatch(in: plistString, options: NSRegularExpression.MatchingOptions(rawValue: UInt(0)), range: NSMakeRange(0, plistString.characters.count))! let matchRange : NSRange = textCheckingResult.range(at: 1) let expirationDateString : String = (plistString as NSString).substring(with: matchRange) let dateFormatter = DateFormatter() dateFormatter.locale = Locale.current dateFormatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ssZ" print( "Profile expires: \(dateFormatter.date(from: expirationDateString)!)" ) return dateFormatter.date(from: expirationDateString)! } return nil } func extractPlist( fromMobileProvisionDataString:String ) -> String { var range = Range(NSMakeRange(0, 1), in: fromMobileProvisionDataString) var plistDataString = fromMobileProvisionDataString.replacingCharacters(in:range!, with: "") range = Range(NSMakeRange(plistDataString.count-1, 1), in: plistDataString) plistDataString.replaceSubrange(range!, with: "") plistDataString = plistDataString.replacingOccurrences(of: " ", with: "") let profileText = hexStringtoAscii( plistDataString ) let profileWords = profileText.components(separatedBy: CharacterSet.newlines) var plistString = ""; var inPlist = false; for word in profileWords { if( word.contains("<plist") ) { inPlist = true } if( inPlist ) { plistString.append(" "); plistString.append( word ) } if (word.contains("</plist")) { inPlist = false } } return plistString; } func hexStringtoAscii(_ hexString : String) -> String { let pattern = "(0x)?([0-9a-f]{2})" let regex = try! NSRegularExpression(pattern: pattern, options: .caseInsensitive) let nsString = hexString as NSString let matches = regex.matches(in: hexString, options: [], range: NSMakeRange(0, nsString.length)) let characters = matches.map { Character(UnicodeScalar(UInt32(nsString.substring(with: $0.range(at: 2)), radix: 16)!)!) } return String(characters) } code-block
How are you distributing this app? Most distribution channels automatically take care of this.I want to provide notification to user to update or force update app before provision certificate get expired
Share and Enjoy
—
Quinn “The Eskimo!” @ Developer Technical Support @ Apple
let myEmail = "eskimo" + "1" + "@apple.com"