[英]PhoneGap 1.0 app Submit to AppStore fails
我們有一個使用PhoneGap 1.0版創建的舊應用。 由於所需的兩個iOS / JS代碼都發生了巨大變化 ,因此絕對沒有機會遷移到最新的PhoneGap / Cordova。
嘗試上傳使用iOS SDK 6.1編譯的應用程序失敗,並顯示以下消息:“應用程序不允許訪問UDID,並且不得使用UIDevice的uniqueIdentifier方法。請更新您的應用程序和服務器,以將用戶與引入的供應商或廣告標識符相關聯在iOS 6中。”。
PhoneGap 1.0來源不公開,它作為已編譯框架分發。
有誰知道如何解決此問題?
瘋狂,但工作解決方案 (hack)
好了,一旦PhoneGap 1.0作為已編譯的庫提供,我們可以嘗試更改已編譯的二進制文件本身。
Apple拒絕的原因是對iOS 6中不推薦使用的[UIDevice uniqueIdentifier]方法的調用。如果您的應用(JS代碼)未使用PhoneGap提供的UDID(實際上,不知道有沒有辦法來獲得它),這是安全的( !?參見下面的“注意”,以將uniqueIdentifier的調用更改為其他任何返回UIDevice類的NSString的方法。
我已經使用+(NSString *)systemVersion-systemVersion屬性的獲取器。
因此,得到任何HEX編輯和打開文件:/users/Shared/PhoneGap/Frameworks/PhoneGap.framework/PhoneGap與systemVersion \\ 0 \\ 0 \\ 0替換唯一標識符 。
\\ 0-為零代碼字節,需要對齊新名稱的長度,該名稱要短3個字節!
重建您的應用程序,並且…將中提琴成功上傳到AppStore!
注意:當然,您必須檢查您的應用程序功能是否未損壞。 我為我的應用程序做了,它就像一個魅力。
不。 蘋果是您的問題。 您必須將PhoneGap更新到至少2.5,請參見此處發布: https : //shazronatadobe.wordpress.com/2013/05/01/cordovaphonegap-and-the-new-apple-app-store-requirements/
而且,您必須更新編寫的任何插件或本機才能不使用uuid。
我在使用phonegap 1.2.0時遇到了同樣的問題,但是上面的“ hack”對我不起作用-它給了我一個錯誤
ld: file is universal (3 slices) but does not contain a(n) armv7 slice:
因此,我找到了一個更簡單的解決方案-找到在安裝phonegap並打開它時安裝的PhoneGapLib.xcodeproj,然后搜索“ uniqueIdentifier”調用。
然后,我使用了以下代碼( https://stackoverflow.com/a/9458313/1851746 ),以替換UUID值-
- (NSString *)getUUID
{
NSString *UUID = [[NSUserDefaults standardUserDefaults] objectForKey:@"uniqueID"];
if (!UUID)
{
CFUUIDRef theUUID = CFUUIDCreate(NULL);
CFStringRef string = CFUUIDCreateString(NULL, theUUID);
CFRelease(theUUID);
UUID = [(__bridge NSString*)string stringByReplacingOccurrencesOfString:@"-"withString:@""];
[[NSUserDefaults standardUserDefaults] setValue:UUID forKey:@"uniqueID"];
}
return UUID;
}
使用[self getUUID]而不是uniqueIdentifier調用此方法是可行的,盡管由於某種原因,它會導致錯誤,並將后續值添加到phonegap版本的字典中。 因此,我只是在與上述相同的代碼塊中對此進行了硬編碼。
然后將目標更改為“ PhoneGap”,進行構建,然后轉到Products文件夾並在finder中打開位置,復制framework文件夾,並替換在Users / Shared / PhoneGap / Frameworks中找到的文件夾。
項目應編譯並被App Store接受
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.