2012-04-06 103 views
11

我有兩個內置應用程序圖標(免費和高級版),是否可以在應用程序內購買成功完成後以編程方式將免費圖標替換爲高級圖標?我可以通過編程方式更改應用程序圖標嗎

+2

由於iOS的'10.3'這是可能的!看看這個答案:http://stackoverflow.com/questions/41950994/is-this-possible-to-apply-the-alternative-icon-to-the-ios-application – KlimczakM 2017-03-30 12:16:58

回答

13

不,圖標是在應用程序包中指定的,您不得更改該圖標。如果你改變它,你的應用程序簽名將變得無效(不同的校驗和),因此你的應用程序將不再運行。

+0

這是否也適用於內部應用程序,而不是通過公共App Store發佈的應用程序? plist是不可變的嗎? – 2015-02-03 23:25:00

0

恐怕不是;很確定應用程序圖標不允許有條件地更改。

0

如果沒有越獄手機,我不認爲這是可能的。應用程序圖標包含在您不允許寫入的應用程序包中。

-1

我不同意上面的所有答案。 請嘗試應用程序「OneTap」,它會讓你自己的圖標你的新應用程序。 OneTap應用程序在Itune上免費。

+3

我相信很多人有興趣,如果這是可能的。請保留一個有效的URL鏈接或解決方案的源代碼。 – Vincent 2013-10-21 12:23:21

+1

這是不可能的! OneTap不會更改其自己的AppIcon。它只是打開Safari與選定的圖像和用戶應按保存到主屏幕。在此之後,您可以點擊這個新的應用程序圖標,將打開Safari瀏覽器,將您重定向到OneTap應用程序 因此,以編程方式更改應用程序圖標是不可能的 – AlexPrinceton 2014-05-08 08:19:43

3

不,絕對不是。應用程序包的這一部分是隻讀的,並且還有代碼簽名。

有關TapOne應用程序的答案是完全不同的。它爲網站或電話號碼創建「網絡剪輯」。例如,要創建爲您的網站的iPhone圖標,可以添加這樣的事情到您的網頁標題:

<link rel="apple-touch-icon" href="/your-custom-icon.png"/> 

這裏有更多可用的信息:https://developer.apple.com/library/ios/documentation/AppleApplications/Reference/SafariWebContent/ConfiguringWebApplications/ConfiguringWebApplications.html

TapOne和網頁剪輯不會編程更改應用程序包中的圖標。

9

這種情況有一個新的解決方案。

您可以使用

setAlternateIconName(_:completionHandler:) 

iOS的10.3出來和Xcode 8.3。

10.3+

更新:

用法很簡單,關鍵是要找出的plist用法和注意,你不能從xcassets加載資產(至少對我來說沒有工作)。您需要將圖標文件添加到項目中,並選擇180x180圖像以提高質量。

您需要使用「圖標文件(iOS 5)」,新的圖標文件不起作用。

最後一件事情是,當您更改按鈕上的圖標時,會彈出一個警報窗口,其中顯示「您已更改」IcoTest「的圖標。

enter image description here

//ViewController.swift 
@IBAction func ico1Click(_ sender: Any) { 
    if UIApplication.shared.supportsAlternateIcons{ 
     UIApplication.shared.setAlternateIconName("Icon2", completionHandler: { (error) in 
      print(error ?? "") 
     }) 
    }else{ 
     print("NO NO") 
    } 
} 

//Info.plist 
<key>CFBundleIcons</key> 
<dict> 
    <key>CFBundleAlternateIcons</key> 
    <dict> 
     <key>Icon1</key> 
     <dict> 
      <key>CFBundleIconFiles</key> 
      <array> 
       <string>alternater1_180x180</string> 
      </array> 
      <key>UIPrerenderedIcon</key> 
      <false/> 
     </dict> 
     <key>Icon2</key> 
     <dict> 
      <key>CFBundleIconFiles</key> 
      <array> 
       <string>alternater2_180x180</string> 
      </array> 
     </dict> 
    </dict> 
</dict> 
+0

嘗試擴展您的答案。你還沒有解釋過這是UIApplication的一種方法,或者如何設置plist或任何東西。只是說'調用這個方法'對任何人都沒有用。 – dlbuckley 2017-01-25 15:19:41

+0

我想與大家分享這個令人興奮的消息。我會和我一樣分享一下如何做。很傷心這對你來說還不夠。 – ymutlu 2017-01-25 18:29:18

+0

這是令人興奮的消息,你是正確的。但是你的回答並不能告訴我們如何使用這個新功能的全部內容,它的含義和實現細節。我投下了答案,因爲就目前而言,這僅僅是爲了獲得選票而不是幫助任何人。如果你修改你的答案以充分解釋功能,那麼我會高興地投票它:) – dlbuckley 2017-01-26 09:51:16

1

的更新:因爲iOS的10.3可以由具有在info.plist中定義的備用圖標更新的應用圖標。

多見於Apple Docs

相關問題