iOS 启动图和 appIcon 整理

本文详细整理了iOS应用的启动图片、App Icon和介绍图的规范,包括上传要求和当前(2018年10月)的最新标准。

启动图片整理

设备竖屏横屏命名
iPhone XS Max1242px × 2688px2688px × 1242pxDefault-1242h@3x.png
iPhone XS
iPhone X
1125px × 2436px436px × 1125pxDefault-812h@3x.png
iPhone XR828px × 1792px1792px × 828pxDefault-828h@2x.png
iPhone 8 Plus
iPhone 7 Plus
iPhone 6s Plus
1242px × 2208px2208px × 1242pxDefault-736h@3x.png
iPhone 6s
iPhone 7
iPhone 8
750px × 1334px1334px × 750pxDefault-667h@2x.png
iPhone5c
iPhone5s
iPhone se
640px × 1136px1136px × 640pxDefault-568h@2x
Phone4s640 × 960960 × 640Default@2x.png

app Icon 整理

查看来源网站

显示位置尺寸命名
app icon180px×180px(60pt×60pt @ 3x)Icon-60@3x.png
app icon120px×120px(60pt×60pt @ 2x)Icon-60@2x.png
Spotlight图标大小120px×120px(40pt×40pt @ 3x)Icon-Small-40@3x.png
Spotlight图标大小80px×80px(40pt×40pt @ 2x)Icon-Small-40@2x.png
设置图标大小87px×87px(29pt×29pt @ 3x)Icon-Small@3x.png
设置图标大小58px×58px(29pt×29pt @ 2x)Icon-Small@2x.png
通知图标大小60px×60px(20pt×20pt @ 3x)Icon-Small-20@3x
通知图标大小40px×40px(20pt×20pt @ 2x)Icon-Small-20@2x
App Store1024px × 1024px (1024pt × 1024pt @1x)

app 介绍图整理

设备尺寸必填项
6.5 英寸超视网膜显示屏(iPhone XS Max,iPhone XR)1242 x 2688可选
5.8 英寸超视网膜显示屏(iPhone X,iPhone XS)1125 x 2436可使用 6.5 英寸显示屏 ( 可选)
5.5 英寸视网膜显示屏(iPhone 6s Plus,iPhone 7 Plus,iPhone 8 Plus)1242 x 2208必须要
4.7 英寸视网膜显示屏(iPhone 6,iPhone 6s,iPhone 7,iPhone 8)750 x 1334可能使用 5.5 英寸显示屏
4 英寸视网膜显示屏(iPhone SE)640 x 1136可能使用 5.5 英寸或 4.7 英寸显示屏
3.5 英寸视网膜显示屏(iPhone 4s)640 x 960可能使用 5.5 英寸、4.7 英寸或 4 英寸显示屏

目前 appStore 的版本只要上传 5.5寸介绍图就行(目前指的是 2018年10月份)。

<think>我们被要求参考站内引用内容,并回答用户关于如何判断tbopen对应的APP是否启动,以及检查启动该APP的代码。 根据引用[1][2]的内容,我们可以得知: 1. 在iOS中,可以通过WKWebView的代理方法拦截包含"tbopen"的scheme的URL。 2. 在拦截到之后,可以使用`[[UIApplication sharedApplication] canOpenURL:requestUrl]`来判断是否可以打开该URL(即判断是否有App可以处理这个scheme,也就是淘宝App是否安装并可以处理该scheme)。 3. 如果可以打开,则使用`[[UIApplication sharedApplication] openURL:requestUrl]`来打开淘宝App。 但是,用户问题中要求的是判断tbopen对应的APP(即淘宝App)是否启动,这里需要注意:我们通常无法直接知道另一个App是否正在运行(出于安全考虑,iOS禁止检测其他App的运行状态)。我们只能通过尝试用scheme打开(即上述方法)来判断App是否安装并能否响应这个scheme。 所以,实际上我们只能判断淘宝App是否安装(即能否打开),而不能判断它是否正在运行(启动状态)。当我们使用`openURL`方法时,如果淘宝App没有运行,系统会启动它;如果已经在运行,系统会将这个URL传递给淘宝App,由它处理。 因此,我们提供的代码主要是判断淘宝App是否安装(通过`canOpenURL`),然后打开它(通过`openURL`)。 另外,引用[4]提到在uniapp中配置urlschemesurlschemewhitelist,这对于iOS来说是必要的,因为iOS9之后需要在info.plist中声明白名单(LSApplicationQueriesSchemes)才能使用`canOpenURL`方法检查特定的scheme。 综合以上,我们给出以下解决方案: 1. 判断淘宝App是否安装(即能否处理tbopen scheme)的方法:使用`canOpenURL`方法。 2. 启动淘宝App的方法:使用`openURL`方法(如果未安装,则什么也不会发生,或者会跳转到App Store?但这里需要根据需求处理,比如未安装时跳转到App Store下载页,但引用中没有提供,我们可以补充说明)。 引用[2]中提供了iOS的示例代码(Objective-C),我们将其整理如下(在WKWebView的代理方法中,但用户可能不是在WebView中,所以我们可以提取出核心代码): 核心代码(Objective-C): NSURL *url = [NSURL URLWithString:@"tbopen://item.taobao.com/item.htm?id=xxxx"]; // 具体的URL if ([[UIApplication sharedApplication] canOpenURL:url]) { [[UIApplication sharedApplication] openURL:url]; } else { // 处理淘宝未安装的情况,比如跳转到App Store的淘宝下载页面 // 淘宝在App Store的下载链接,一般格式为:https://apps.apple.com/cn/app/id387682726 NSURL *appStoreUrl = [NSURL URLWithString:@"https://itunes.apple.com/cn/app/id387682726?mt=8"]; [[UIApplication sharedApplication] openURL:appStoreUrl]; } 但是,用户可能需要的是判断淘宝App是否已经启动(运行中),这在iOS中是无法直接获取的。因此,我们只能按照上述方式处理。 另外,引用[4]中提到了在uniapp中使用阿里百川SDK的情况,但用户问题没有特别说明平台,我们主要参考了iOS的代码。如果用户需要Android的代码,我们也可以补充,但引用中没有直接提供Android判断App是否安装的代码。实际上,Android中可以通过PackageManager来检查,然后使用Intent启动。 由于用户引用中提供了iOS的代码,我们先给出iOS的解决方案。如果用户需要Android的,我们可以补充。 但是,用户上一次的问题回答中并没有明确平台,所以这里我们同时提供iOSAndroid的示例。 总结: 问题:如何判断tbopen对应的APP是否启动? 回答:实际上,我们无法直接判断淘宝App是否正在运行(启动状态),只能判断它是否安装(即能否响应tbopen scheme)。因此,我们通常通过判断淘宝App是否安装,然后尝试打开它(如果安装了,系统会自动处理:如果未运行则启动,如果已运行则唤醒并传递URL)。 步骤: 1. 判断淘宝App是否安装(通过检查是否能打开tbopen scheme的URL) 2. 如果安装,则打开该URL(会启动或唤醒淘宝App) 3. 如果未安装,可以跳转到App Store(iOS)或应用市场(Android)下载 代码示例: iOS (Objective-C): // 构造tbopen的URL NSURL *tbURL = [NSURL URLWithString:@"tbopen://item.taobao.com/item.htm?id=xxxx"]; if ([[UIApplication sharedApplication] canOpenURL:tbURL]) { // 可以打开,说明淘宝App已安装 [[UIApplication sharedApplication] openURL:tbURL]; } else { // 未安装,跳转到App Store NSURL *appStoreURL = [NSURL URLWithString:@"https://itunes.apple.com/cn/app/id387682726?mt=8"]; [[UIApplication sharedApplication] openURL:appStoreURL]; } 注意:在iOS9及以上,需要在info.plist中设置LSApplicationQueriesSchemes,添加tbopen,否则canOpenURL会返回NO。 Android (Java): // 假设在Activity中 String tbUrl = "tbopen://item.taobao.com/item.htm?id=xxxx"; Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(tbUrl)); // 检查是否有Activity可以处理这个Intent(即是否安装淘宝App) if (intent.resolveActivity(getPackageManager()) != null) { startActivity(intent); } else { // 未安装,跳转到应用市场 Intent marketIntent = new Intent(Intent.ACTION_VIEW, Uri.parse("market://details?id=com.taobao.taobao")); // 或者使用淘宝在应用市场的网页链接,如果设备没有应用市场,可以使用网页 // 注意:淘宝的包名是com.taobao.taobao if (marketIntent.resolveActivity(getPackageManager()) != null) { startActivity(marketIntent); } else { // 如果应用市场也没有,跳转到网页版应用市场 Intent webIntent = new Intent(Intent.ACTION_VIEW, Uri.parse("https://play.google.com/store/apps/details?id=com.taobao.taobao")); startActivity(webIntent); } } 需要注意的是,在Android高版本中,使用隐式Intent可能会受到限制(例如Android 11的包可见性),因此可能需要声明<queries>(在AndroidManifest.xml中)。 另外,用户引用的内容中还提到了uniapp,如果用户是在uniapp环境中,可以使用uniapp提供的API进行判断跳转。 在uniapp中,可以使用: plus.runtime.openURL(url, function(error) { // 打开失败,可能是未安装App plus.nativeUI.alert("未安装淘宝App"); // 然后跳转应用市场 plus.runtime.openURL("https://apps.apple.com/cn/app/id387682726"); // iOS // 或者Android应用市场,这里需要判断平台 }); 但是,由于淘宝的scheme(tbopen)在iOS上需要配置urlschemes(引用[4]中提到了配置),在Android上需要在manifest.json中配置scheme(uniapp中需要在manifest.json中配置App的scheme,但这里我们是打开第三方App,所以不用配置自己的,但需要配置使用哪些第三方scheme?不需要,但需要确保在Android的intent-filter中声明了可以打开http/https?这里主要是调用第三方App)。 因此,在uniapp中更简单的方法是使用上述plus.runtime.openURL,它会尝试打开URL,如果失败则进入回调。 所以,我们可以给出uniapp的代码示例: uni-app (JavaScript): // 尝试打开淘宝App let tbUrl = 'tbopen://item.taobao.com/item.htm?id=xxxx'; plus.runtime.openURL(tbUrl, function(error) { // 打开失败 uni.showToast({ title: '未安装淘宝App', icon: 'none' }); // 跳转到下载页面(这里需要根据平台跳转不同的应用市场) let downloadUrl = ''; if (plus.os.name == 'iOS') { downloadUrl = 'https://apps.apple.com/cn/app/id387682726'; } else { downloadUrl = 'market://details?id=com.taobao.taobao'; // 或者使用网页版应用市场,如果market打不开,可以尝试网页 } plus.runtime.openURL(downloadUrl); }); 注意:在iOS上,使用plus.runtime.openURL打开tbopen时,需要按照引用[4]中配置urlschemes(在manifest.json的ios节点下配置urlschemes为tbopen+AppKey,以及urlschemewhitelist),否则在iOS上可能无法唤起淘宝App。 综上所述,我们提供了三种环境下的代码:iOS原生、Android原生uniapp。 用户可以根据自己的平台选择相应的方法。 由于用户的问题没有明确说明平台,我们提供了多平台的解决方案。 最后,我们还需要注意:在iOS上,从iOS9开始,苹果要求必须在info.plist(或uniapp的manifest.json中配置)中添加白名单(LSApplicationQueriesSchemes),否则canOpenURL会返回NO。在引用[4]中,uniapp的配置示例已经包含了urlschemewhitelist,这其实就是设置白名单。 因此,在uniapp中,需要按照引用[4]配置manifest.json(ios部分): "ios": { "urltypes": [{ "urlschemes": ["tbopen32470416"] // tbopen+你的AppKey(从阿里百川获取) }], "urlschemewhitelist": "tbopen,tmall" } 这样,在iOS上才能正常使用canOpenURL(在plus.runtime.openURL内部会用到)来判断。 总结回答: 1. 判断tbopen对应的淘宝App是否启动(运行中)在技术上不可行,我们只能判断是否安装。 2. 代码实现主要是判断淘宝App是否安装(通过尝试打开tbopen的URL),如果已安装则打开,未安装则跳转到应用市场。 我们提供了不同平台的代码示例。 </think>### 如何判断 tbopen 对应的淘宝 APP 是否启动及代码实现 #### 核心原理 1. **判断 APP 是否安装**:通过检查系统能否处理 `tbopen://` 协议(Scheme)来判断淘宝 APP 是否安装。 2. **启动 APP**:使用系统级 Intent/URL Scheme 唤起淘宝客户端。 3. **状态获取限制**:**无法直接检测 APP 是否正在后台运行**(系统级安全限制),只能检测是否安装。 --- ### 代码实现(多平台) #### iOS 实现(Objective-C) ```objectivec // 1. 检查淘宝是否安装 - (BOOL)isTaoBaoInstalled { NSURL *tbURL = [NSURL URLWithString:@"tbopen://"]; return [[UIApplication sharedApplication] canOpenURL:tbURL]; } // 2. 启动淘宝并打开指定页面 - (void)openTaoBaoWithItemID:(NSString *)itemID { NSString *urlString = [NSString stringWithFormat:@"tbopen://item.taobao.com/item.htm?id=%@", itemID]; NSURL *tbURL = [NSURL URLWithString:urlString]; if ([[UIApplication sharedApplication] canOpenURL:tbURL]) { // 唤起淘宝客户端 [[UIApplication sharedApplication] openURL:tbURL options:@{} completionHandler:nil]; } else { // 未安装时跳转 AppStore 下载页 NSURL *appStoreURL = [NSURL URLWithString:@"https://apps.apple.com/cn/app/id387682726"]; [[UIApplication sharedApplication] openURL:appStoreURL]; } } ``` **必备配置**(Info.plist): ```xml <key>LSApplicationQueriesSchemes</key> <array> <string>tbopen</string> <!-- 声明白名单 --> </array> ``` #### Android 实现(Java) ```java // 1. 检查淘宝是否安装 public boolean isTaoBaoInstalled(Context context) { Intent intent = new Intent(Intent.ACTION_VIEW); intent.setData(Uri.parse("tbopen://item.taobao.com/item.htm?id=0")); return intent.resolveActivity(context.getPackageManager()) != null; } // 2. 启动淘宝并打开指定页面 public void openTaoBaoWithItemID(Context context, String itemID) { Intent intent = new Intent(Intent.ACTION_VIEW); intent.setData(Uri.parse("tbopen://item.taobao.com/item.htm?id=" + itemID)); // 验证是否能唤起淘宝 if (intent.resolveActivity(context.getPackageManager()) != null) { context.startActivity(intent); } else { // 未安装时跳转应用市场 Intent marketIntent = new Intent(Intent.ACTION_VIEW); marketIntent.setData(Uri.parse("market://details?id=com.taobao.taobao")); context.startActivity(marketIntent); } } ``` **必备配置**(AndroidManifest.xml): ```xml <intent-filter> <action android:name="android.intent.action.VIEW" /> <category android:name="android.intent.category.DEFAULT" /> <category android:name="android.intent.category.BROWSABLE" /> <!-- 声明支持的 Scheme --> <data android:scheme="tbopen" /> </intent-filter> ``` #### UniApp 实现(通用跨平台) ```javascript // 尝试唤起淘宝 APP function openTaoBao(itemID) { const tbUrl = `tbopen://item.taobao.com/item.htm?id=${itemID}`; plus.runtime.openURL(tbUrl, (error) => { // 唤起失败(未安装或协议不支持) uni.showToast({ title: '未检测到淘宝APP', icon: 'none' }); // 跳转下载页(自动区分平台) const downloadUrl = plus.os.name === 'iOS' ? 'https://apps.apple.com/cn/app/id387682726' : 'market://details?id=com.taobao.taobao'; plus.runtime.openURL(downloadUrl); }); } ``` **必备配置**(manifest.json): ```json "ios": { "urltypes": [{ "urlschemes": ["tbopen32470416"] // tbopen+AppKey }], "urlschemewhitelist": ["tbopen", "tmall"] // 协议白名单 }, "android": { "schemes": ["tbopen"] // 声明支持的 Scheme } ``` --- ### 注意事项 1. **安全图片验证** 阿里百川 SDK 要求放置安全图片 `yw_1222_baichuan.jpg`,否则唤起失败(引用[3][^3])。 2. **Scheme 动态性** `tbopen` 后的数字串(如 `tbopen32470416`)是阿里百川分配的 **AppKey**,需在[百川后台](https://baichuan.taobao.com)注册获取(引用[4][^4])。 3. **平台差异** - iOS:必须配置 `LSApplicationQueriesSchemes` 白名单。 - Android:需在 `intent-filter` 中声明 Scheme。 4. **无法检测运行状态** 系统限制导致只能检测安装状态,无法判断 APP 是否正在后台运行。 --- ### 常见问题解决 1. **唤起失败的可能原因**: - 未正确配置 Scheme 白名单(iOS/Android)。 - 安全图片未放置或文件名错误(必须为 `yw_1222_baichuan.jpg`)。 - 淘宝客户端版本过低(需更新至最新版)。 2. **测试建议**: ```javascript // 在 WebView 中测试 Scheme(引用[2][^2]) if (url.startsWith('tbopen://')) { if (canOpenTB) window.location.href = url; // 尝试唤起 else alert('未安装淘宝APP'); } ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值