当前位置: 首页 > news >正文

苹果开发:记录苹果开发设置默认名称异常的问题,包括苹果多语言名称设置,本文纯干货,快上车!!!

请添加图片描述

目录

  • 如何正确设置默认名称
        • 1. 修改 Xcode 项目名称
        • 2. Unity 开发(如ios游戏类)
        • 3. Mac 开发(macOS App)
  • 配置和多语言支持
        • 配置默认名称
        • 代码动态修改游戏名称
        • 多语言支持
        • 多语言可能遇到的问题

如何正确设置默认名称

你在苹果(iOS/macOS)开发中想要设置默认的游戏名称,具体方法取决于你的开发环境和目标:

1. 修改 Xcode 项目名称

如果是使用 Xcode 开发的(例如基于 UIKit 或 SwiftUI),可以在 Info.plist 文件中设置:

CFBundleDisplayName(显示名称,出现在主屏幕)
CFBundleName(内部使用的名称)

你可以在 Info.plist 添加:

<key>CFBundleDisplayName</key>
<string>我的默认包体</string>
<key>CFBundleName</key>
<string>默认包名</string>

2. Unity 开发(如ios游戏类)

如果你的包体是基于 Unity 开发的,可以在 Unity 编辑器中:

进入 Project Settings -> Player -> iOS 选项卡
修改 Product Name
然后在 Info.plist 中,会自动同步 CFBundleDisplayName。

如果想动态修改游戏名称,可以在 PostProcessBuild 脚本中修改 Info.plist:

using UnityEditor;
using UnityEditor.Callbacks;
using System.IO;

public class PostBuildProcessor {
    [PostProcessBuild]
    public static void OnPostprocessBuild(BuildTarget target, string pathToBuiltProject) {
        if (target == BuildTarget.iOS) {
            string plistPath = pathToBuiltProject + "/Info.plist";
            var plist = new UnityEditor.iOS.Xcode.PlistDocument();
            plist.ReadFromString(File.ReadAllText(plistPath));

            var rootDict = plist.root;
            rootDict.SetString("CFBundleDisplayName", "默认游戏名称");

            File.WriteAllText(plistPath, plist.WriteToString());
        }
    }
}


3. Mac 开发(macOS App)

macOS App 也使用 Info.plist:

<key>CFBundleDisplayName</key>
<string>默认Mac</string>

如果是使用 Cocoa 或 Swift,可以在 AppDelegate 中动态修改:

Bundle.main.object(forInfoDictionaryKey: "CFBundleDisplayName") as? String

配置和多语言支持

配置默认名称

进入 Info.plist 文件,找到:
CFBundleDisplayName(App 显示名称)
CFBundleName(内部 Bundle 名称)

<key>CFBundleDisplayName</key>
<string>默认</string>
<key>CFBundleName</key>
<string>DefaultGame</string>

效果:

CFBundleDisplayName 会影响 iOS 主屏幕上的 App 名称。
CFBundleName 主要用于系统内部标识,不影响用户界面。

代码动态修改游戏名称

你希望根据某些条件更改名称,可以使用 NSUserDefaults 让包体在运行时显示不同名称:

UserDefaults.standard.set("自定义包体名", forKey: "CFBundleDisplayName")

⚠️ 注意:此方法不会修改 iOS 主屏幕上的名称,只适用于游戏内部 UI 逻辑。

多语言支持

如果你的包体有多种语言,可以使用 InfoPlist.strings 让不同语言显示不同名称:

创建 InfoPlist.strings 文件(在 Supporting Files 目录)。
添加内容:

"CFBundleDisplayName" = "默认名称";

对不同语言文件夹(如 en.lproj、zh-Hans.lproj)创建不同版本,App 语言不同,名称也会变化。

多语言可能遇到的问题

在 Xcode 的多语言设置中,en.lproj 和 english.lproj 并不是等价的,iOS 主要识别的是标准的语言代码,如 en.lproj。具体区别如下:

  1. en.lproj
    标准的英语(English)语言目录,对应 iOS 语言代码 en。
    适用于所有 英语变体(如果没有更具体的语言包)。
    当用户的设备语言设置为 英语(English) 时(无论是美国、英国、加拿大等),如果没有更细分的 en-XX.lproj 目录,iOS 会默认使用 en.lproj。

  2. english.lproj
    不是标准的 iOS 语言目录名称,iOS 不会识别 它作为语言目录。
    iOS 只识别符合 ISO 639-1 语言代码 规则的文件夹,如 en.lproj、fr.lproj、zh-Hans.lproj 等。
    如果你的项目里有 english.lproj,它不会被 iOS 识别和使用,除非你在代码里手动指定它(但这很不常见)。

如果使用了不标准的语言目录名称,会导致部分其他语言情况下,包名显示异常问题。

相关文章:

  • Excel 小黑第18套
  • 计算机二级MS之Excel
  • 企业数字化20项目规划建设方案微服务场景与数据应用(50页PPT)(文末有下载方式)
  • RS485总线加终端电阻可能存在的问题
  • 蓝桥与力扣刷题(蓝桥 购物单)
  • 【Prometheus】prometheus标签替换label_replace,动态修改生成标签,增强查询的灵活性和表达能力
  • 【Linux进程七】程序地址空间
  • UDP协议原理
  • CatchCat
  • 【电路笔记】-D型触发器
  • mapper.xml中 “http://mybatis.org/dtd/mybatis-3-mapper.dtd“> 报错的解决方法
  • 指令系统3(算数运算指令)
  • 算法题(102):八皇后
  • 剑指 Offer II 113. 课程顺序
  • 【 <二> 丹方改良:Spring 时代的 JavaWeb】之 Spring MVC 的核心组件:DispatcherServlet 的工作原理
  • 投资日记_道氏理论技术分析
  • 互联网it常用抓包工具说明
  • 洛谷 P10108 [GESP202312 六级] 闯关游戏 题解
  • 【Linux】——环境变量与进程地址空间
  • ocp考试有判断题吗?多少分及格?
  • 人民日报评论员观察:稳就业,抓好存量、增量、质量
  • 习近平向第三十四届阿拉伯国家联盟首脑理事会会议致贺信
  • 我使馆就中国公民和企业遭不公正待遇向菲方持续提出严正交涉
  • 《制止滥用行政权力排除、限制竞争行为规定(修订草案征求意见稿)》公开征求意见
  • 上海率先推进生物制品分段生产试点,这款国产1类创新药获批上市
  • 美国务院批准向土耳其出售导弹及相关部件,价值3.04亿美元