分类: IOS

  • 苹果开发者关联封号扫盲贴

    什么是关联封号
    开发者账号因为种种原因被封后,苹果官方为了防止开发者再次“作恶”,通过技术手段识别开发者是否通过重新开设账号继续上架产品,一旦识别到和原先封号的账号有关联,就会再次将新开设的账号查封,这个机制一般我们就叫关联封号。

    苹果通过什么方式判断账号是关联的
    关联手段有很多,包括但不限于:

    申请、登陆账号或测试所用的硬件设备(手机、电脑、笔记本)
    网络环境(IP段等)
    重新请求上架app的特征(代码,文件,请求域名)
    苹果账号(登陆了老账号)
    会员付费的信用卡
    开发者收款的银行卡
    app转移
    是不是一旦关联上,就一定会封号
    不一定。有一些不明显的关联,让苹果无法“确信”开发者是同一个人,可能一时半会儿不会被关联,但是风险一直存在,切勿冒险。

    如何防止苹果关联到原来的网络环境
    方法有很多,购买移动网卡,或手机热点等方式都是可以的,或者去公共的网络环境(咖啡厅等)。

    如果银行卡还是本人的,但是换一张卡可以吗
    虽然换了卡,但是银行卡还是本人的话,依然存在关联风险。最好是换个个体,比如亲人的。

    代码混淆可以规避代码关联吗
    可以,但不稳定。因为苹果的混淆识别一直在进步。

    如果知道我一个账号可能被关联了,但是我不更新它,账号会被封吗
    有可能不会。因为苹果关联的触发时机一般是在开发者提交应用审核的时候,所以如果开发者不提交应用审核,大部分时候苹果不会主动去审查关联和封号。

    我可以通过买二手手机和笔记本作为新申请的开发测试设备吗
    可以。风险较低,当然了,存在一个可能性就是买的二手设备已经被关联,但是一般这种情况概率较低,除非你找开发者买设备。

    通过号商买账号可靠吗
    任何号商卖的账号都存在风险,不管这个号商宣称自己有多安全。但是如果别无选择,也可以一试。

    如果被关联封号了,开新号上新产品有什么建议吗
    最重要的建议就是不要作死,以下注意事项可以作为参考。

    把新号当做一个全新的账号来养,杜绝和老号的关联。
    新产品的网络请求域名最好改换。
    新号登陆及关联的设备必须是全新的。
    新号登陆及相关网络环境也应该是全新的,最简单的做法是买一个移动网卡当专用环境。
    新号保持不乱更新的习惯,不然容易压低权重。

  • iOS IPA上传到App Store Connect的三种方案详解

    iOS IPA上传到App Store Connect的三种方案详解

    引言
    在iOS应用开发中,完成开发后的重要一步就是将IPA文件上传到App Store Connect以便进行测试或发布到App Store。无论是使用Xcode进行原生开发,还是通过uni-app、Flutter等跨平台工具生成的IPA文件,上传到App Store的流程都是类似的。苹果官方提供了三种上传IPA的方案,分别适用于不同的开发场景,帮助开发者在不同的环境中灵活高效地完成应用上传。

    本篇博客将详细介绍这三种方案,帮助开发者选择最适合自己的上传方式。

    方案一:通过Xcode上传IPA
    适用场景
    Xcode是iOS开发者的主要工具,也是开发者完成应用构建和上传的常用方式。它非常适合直接在开发环境中将应用上传到App Store Connect,尤其是对独立开发者或小团队而言,这是一种简单且高效的选择。

    具体步骤
    1.登录Apple开发者账号
    首选,确保你已经在Xcode中登录了你的Apple开发者账号。

    打开Xcode后,点击左上角菜单栏中的 “ Xcode -> Settings ” ,进入 “ Accounts ” 选项卡。
    在这里,你可以添加并登录你的Apple ID。如果已经登录,可以直接查看关联的开发者账号信息。

    2.选择正确的项目和目标
    确保你打开了你需要构建和上传的项目,并且已经选择了正确的Target(应用目标)。Target是项目的一个配置文件,定义了构建和发布应用的所有信息。

    3.构建并归档(Archive)项目
    首先选择构建目标设备为Any iOS Device (arm64)
    在Xcode菜单栏中,点击“Product -> Archive”以对项目进行归档。这个过程会生成一个可以上传的IPA包。
    构建成功之后,Xcode将会自动打开“Organizer”菜单下的“Achives”窗口,显示所有归档项目的列表。

    4.上传到App Store Connect
    在“Archives”窗口中,选择我们刚刚生成的归档文件,点击右侧的“Distribute App”按钮。
    选择“App Store Connect”作为分发目标,点击“Distribute”。接着选择“Upload”,因为我们是自动管理证书和签名,所以只需要确保账号对应。如果是手动配置证书选择合适的证书。
    Xcode将进行一系列的自动验证(如证书、描述文件等),并在一切正常的情况下开始上传IPA文件。

    5.等待上传完成
    上传过程中,Xcode会显示上传进度。上传成功后,你可以在App Store Connect中查看到应用。
    在App Store Connect的“TestFlight”或“分发”选项卡中,我们可以对应用进行测试或提交审核。
    优缺点
    优点:Xcode的方式最为直接,省去了复杂的配置步骤,适合各个阶段和规模的团队和以及不需要自动化流程的开发团队。
    缺点:仅适用于macOS环境,依赖Xcode工具,不能上传现有IPA,并且对CI/CD支持较弱。
    方案二:通过命令行工具(altool)上传IPA
    适用场景
    对于需要自动化部署或在CI/CD流水线中集成的开发团队来说,使用命令行工具上传IPA时一个高效的选择。通过altool,我们可以直接就爱那个IPA上传到App Store Connect,而无需依赖Xcode的图形页面。这个方案特别适合那些使用CI/CD工具链(如Jenkins、Fastlane等)来自动化上传和发布流程的开发者。

    具体步骤
    1.确保安装Xcode命令工具
    在使用altool之前,确保你的系统已经安装了Xcode的命令行工具。如果没有,可以通过以下命令进行安装:

    xcode-select –install
    2.生成App专用密码
    由于altool上传IPA需要认证,所以我们需要生成一个应用专用密码。操作步骤如下:

    登录Apple ID管理页面。
    进入“安全”部分,点击“生成App专用密码”。
    创建一个新的专用密码并将其保持。稍后在命令中使用。
    3.上传IPA文件
    使用altool命令上传IPA。具体命令如下:

    xcrun altool –upload-app -f “YourApp.ipa” -t ios -u “your@appleid.com” -p “app-specific-password”
    替换“YourApp.ipa”为你需要上传的IPA文件的路径。
    “your@appleid.com”是你的Apple开发者账号的邮箱地址。
    “app-specific-password”是你在上一步生成的应用专用密码。
    4.查看上传结果
    上传过程中,终端会显示上传的进度信息。上传完成后,命令行会给出成功或失败的反馈。如果成功你可以在App Store Connect中查看上传的IPA文件状态。如果上传失败,终端将输出相关的错误信息,便于排查问题。

    5.自动化集成
    你可以将altool命令与其他脚本或CI/CD工具结合,完成整个上传流程的自动化。例如,可以在Jenkins或Fastlane中通过脚本执行上传命令,实现CI流程中的无缝集成。

    常见问题与解决方案
    无效的App专用密码:如果出现密码错误,确保你使用的是为Apple ID生成的App专用密码,而不是普通额Apple ID密码。
    上传失败或中断:检查网络连接,并确保你使用的是最新版本的Xcode和命令行工具。如果问题依然存在,尝试重新生成归档或证书。
    优缺点
    优点:命令行工具非常适合自动化部署,能与CI/CD流程紧密集成,特别适合团队合作和频繁发布。
    缺点:需要一定的命令行操作经验,学习成本较高,且出错时排查难度相对较大。
    方案三:通过Transporter上传IPA
    适用场景
    Transporter是一款由Apple提供的独立上传工具,专门用于上传应用的二进制文件到App Store Connect。它适用于哪些不想使用Xcode,或者需要批量上传多个IPA的开发者。对于跨平台开发者(如uini-app、Flutter开发者),这个工具也非常实用,因为它独立于Xcode运行。之前使用Xcode上传效率慢,或者在App Store Connect迟迟看不见构建版本时,通常也会采用这个方案进行上传。

    具体步骤
    1.下载并安装Transporter
    打开Mac App Store,搜索“Transporter”并下载安装。
    安装完成后,启动Transporter应用。
    2.登录Apple开发者账号
    在Transporter应用页面中,点击“Sign In”按钮,使用你的Apple ID和开发者账号进行登录。
    登录成功后,Transporter会连接到你的App Store Connect账户。
    3.准备IPA文件
    将需要上传的IPA文件准备好,确保其文件已经通过Xcode或其他工具正确生成并签名。
    4.拖拽IPA文件到Transporter
    将准备好的IPA文件拖入Transporter的上传窗口。Transporter支持一次拖入多个IPA文件,非常适合需要批量上传的场景。
    确保IPA文件的名称、版本号、Bundle ID等信息正确无误。
    5.点击“Deliver”上传IPA
    文件拖入后,点击右下角的“Deliver”按钮,开始上传IPA到App Store Connect。
    Transporter会自动检查IPA文件的完整性、签名、证书等信息。如果有问题,会提示相应的错误信息。
    6.查看上传状态
    上传过程中,Transporter会显示进度条,我们可以随时查看上传状态。
    上传完成后,Transporter会提供成功或失败的反馈。如果成功,我们就可以登录App Store Connect,查看上传的应用记录。
    常见问题与解决方案
    签名错误:如果上传时遇到签名问题,请检查IPA文件是否已经使用正确的证书签名。如果证书有误,Transporter会提示相关错误信息。
    网络问题:Transporter依赖稳定的网络连接,如果上传中断,请确保网络通畅并重新尝试上传。
    优缺点
    优点:独立于Xcode,特别适合不使用Xcode的开发者,支持批量上传,操作页面简洁明了。对于跨平台开发者非常友好。
    缺点:相比Xcode直接上传,Transporter的使用可能需要额外的步骤,尤其对于新手而言。
    结语
    将IPA文件上传到App Store Connect是iOS应用发布流程中的关键一步。无论你是使用Xcode进行原生开发,还是通过uni-app、Flutter等跨平台框架构建应用,苹果提供了多种上传方式来满足不同场景的需求。Xcode上传适合简单、直接的操作,altool命令行工具则为自动化部署提供了极大的灵活性,而Transporter则是独立于Xcode的批量上传利器。

    开发者可以根据项目的规模、团队需求以及CI/CD集成等实际情况,选择最合适的上传方案,确保高效、顺利地将应用发布到App Store。希望本文的介绍能帮助你更好地理解和掌握这些上传方式,让你的应用上传过程更加顺畅。

    文章来源:https://blog.csdn.net/weixin_39339407/article/details/142829483

  • 一个ios私钥证书可以多个app同时使用

    在苹果开发者中心,ios distribution类型,也就是发布类型的证书,最多只能创建两个,但是这样问题就来了,假如我们4个app,那怎么办呢?能否4个app都使用同一个证书来打包呢?

    答案是可以的,而且必须这样做,因为苹果开发者中心无法创建第三个ios distribution类型的证书, 所以只能也必须多个app共用一个证书。

    不同的app,私钥证书是允许共用的。但是不同的app要创建不同的appId(appId可以理解为包名), 而因为创建证书profile文件的时候,是需要绑定appId的,所以证书profile文件(描述文件)是不允许相同的,假如相同的描述文件,就等于同一个appId了,那么对于苹果开发者中心来说,就等于同一个app了。因此证书profile文件是不允许共用的,而p12格式的私钥证书是允许共用的。

    假如觉得多个不同的团队共用一个证书不安全,可以共用一个cer证书,导出p12证书的时候导出多个,这个是可以实现的,因为p12私钥证书是由cer证书导出的,同一个cer证书,可以导出多次p12证书。

  • 苹果审核不过出现”您的 App 包含 NSUserTrackingUsageDescription….”解决办法

    苹果审核不过出现”您的 App 包含 NSUserTrackingUsageDescription….”解决办法

    最近在提交苹果APP进行审核,提交审核版本的时候,就提交不了。主要报错:

    您的 App 包含 NSUserTrackingUsageDescription,这表示您将会请求追踪用户。要在 App 产品页上更新此信息,您必须注明哪些数据类型会追踪用户。如果此描述有误,请更新您的 App 二进制文件,并将新的构建版本上传到 App Store Connect。

    具体原因:

    12年9月份iOS6发布,IDFA面世,主要用于给开发者跟踪应用中广告的投放效果,但很多应用(或三方SDK)会获取IDFA作为设备唯一标识使用。

    iOS14.5 发布之后,苹果要求应用获取 IDFA 时,需弹出用户许可收集跟踪数据的授权框,如果没有弹出授权框则可能会被App Store审核拒绝,提示违反5.1.2规则:

    解决办法:取消勾选该服务

    配置开启广告标识(IDFA)

    在 manifest.json 文件的 “App常用其它设置” 中可勾选开启(注意HBuilder X 2.4以上为默认勾选),需提交云端打包才会生效

    在低版本的HBuilder是默认勾选,可以将这个勾选给去掉,重新打包后提交应用到AppStore。

    Guideline 5.1.2 - Legal - Privacy - Data Use and Sharing
    
    
    We noticed you do not use App Tracking Transparency to request the user's permission before tracking their activity across apps and websites. The app privacy information you provided in App Store Connect indicates you collect data in order to track the user, including Device ID and Precise Location.
    
    Starting with iOS 14.5, apps on the App Store need to receive the user’s permission through the AppTrackingTransparency framework before collecting data used to track them. This requirement protects the privacy of App Store users.
    
    Next Steps
    
    Here are two ways to resolve this issue:
    
    - You can remove the tracking functionality from your app and update your app privacy information in App Store Connect.
    - If you decide to continue tracking users, you must implement App Tracking Transparency and request permission before collecting data used to track the user or device.
    
    Resources
    
    - See Frequently Asked Questions about the new requirements for apps that track users.
    - Learn more about designing appropriate permission requests.

    如果上架App Store遇到上述问题,请按本文步骤配置开启IDFA,重新打包后再提交审核

    • 确保更新到HBuilderX3.2.9或以上版本,建议使用最新版本
    • 如果是 cli 命令创建的项目,需要将 cli 升级到最新版本,参考cli命令行

    如何判断是否需要开启广告标识(IDFA)

    官网说明指南:https://uniapp.dcloud.net.cn/tutorial/app-ios-idfa.html#

  • UNIAPP一键生成iOS通用链接

    UNIAPP一键生成iOS通用链接

    背景介绍:

    Universal Link是苹果在WWDC 2015上提出的iOS 9的新特性之一。此特性类似于深层链接,并能够方便地通过打开一个Https链接来直接启动您的客户端应用(手机有安装App)。对比以往所使用的URLSheme, 这种新特性在实现web-app的无缝链接时,能够提供极佳的用户体验。 使用前请阅读苹果官方文档。

    由于苹果iOS 13系统版本安全升级,微信SDK1.8.6版本要求支持Universal Links方式跳转,以便进行合法性校验,提升安全性。更多详情请参考微信官方说明

    大白话:以前你的APP要打开其他APP是通过URLScheme实现,后来苹果提出用Https链接来启动,手机上对应的app(已安装),更方便与web-app的无缝对接。微信响应了这个方案。所以大家开发的APP无论是微信登录、微信支付,还是微信分享等一切会跳转到微信,再跳回来的场景,需要提供这个链接。要不然你的应用打开了微信,微信就打不开你的应用。

    如果不配置通用链接,使用新版本HX提交云端打包会失败,提示以下错误信息:

    Error code = -5000
    Error message: 
    Error: not set parameter 'UniversalLinks' @'oauth-weixin'
    

    复制代码

    传统方式配置通用链接需要:

    1. 在苹果开发者中心:开启Associated Domains服务
    2. 获取相关参数,手动创建apple-app-site-association文件
    3. 部署apple-app-site-association文件到自己的云服务器,配置SSL证书解析域名
    4. 然后手动在manifest.json中配置Associated Domains(域名)
    5. 粘贴通用链接到对应权限模块
    6. 在微信开放平台配置通用链接

    其中需要注意的细节较多,且调试起来困难繁琐,困扰了大量开发者。

    现在通过HBuilderX(3.1.9版起)云打包,支持自动生成apple-app-site-association文件,并自动托管到:自带cdn、ssl等服务的“免费”的云服务空间uniCloud的前端网页托管,自动完成manifest.json中的相关配置。用自动化技术替代了,如上所示传统方式令人苦恼的(2-5)4个步骤;只需如下三步直接搞定通用链接。

    #第一步:开启Associated Domains服务

    登录苹果开发者网站,在“Certificates, Identifiers & Profiles”页面选择“Identifiers”中选择对应的App ID,确保开启Associated Domains服务 

    开启Associated Domains服务后需要重新生成profile文件,提交云端打包时使用

    #第二步骤 自动生成通用连接(Universal Links)

    HBuilderX (3.2.0 版本起) 新增QQ互联和新浪微博开放平台的通用链接的设置。以微信模块为例,QQ与微博与之类似。

    打开项目的manifest.json文件,在“(App) SDK配置”项中的微信登录(微信分享、微信支付)下的“iOS平台通用链接(Universal Links)”中, 点击如图所示【自动生成】 

    • 注意您必须先开通”uniCloud(阿里云版)云服务空间和开通前端网页托管”点此查看开通教程,按提示完成操作即可。
    • 注意:通用链接默认域名仅供测试使用,访问频次限制60次/分钟,请勿在正式发行的项目中使用。正式项目,务必绑定自己的域名(顶级域名,二级域名均可)
    • 如何绑定自己的域名详情:https://uniapp.dcloud.io/uniCloud/hosting?id=domain

    #第三步:在第三方开放平台配置通用链接

    #微信

    打开微信开放平台,在“管理中心”页面的“移动应用”下找到已经申请的应用(没有申请应用请点击“创建移动应用”新建应用),点击“查看”打开应用详情页面。 在“开发信息”栏后点击修改,在“iOS应用”下的“Universal Links”项中配置应用的通用链接,如下图所示: 

    #QQ

    打开QQ开放平台,在“管理中心”页面的“移动应用”下找到已经申请的应用(没有申请应用请点击“创建移动应用”新建应用),点击“查看”打开应用详情页面。 在“开发信息”栏后点击修改,在“iOS应用”下的“Universal Links”项中配置应用的通用链接,如下图所示: 

    • 注意:QQ开放平台在填写时 只需要填写到host,后边的path QQ会自动生成,比如 HBuilder中一键生成 https://static-fa42aa5f-xxxxxxx-xxxxxxxx.bspapp.com/qq_conn/11111233333/ 只需要填写 https://static-fa42aa5f-xxxxxxx-xxxxxxxx.bspapp.com/,具体请查看 QQ 填写及校验universallinks

    #微博

    打开微博开放平台,在“我的应用”下找到已经申请的应用,点击“查看”打开应用详情页面。 在“应用信息”栏后点击修改,在“iOS应用”下的“Universal Links”项中配置应用的通用链接,如下图所示:

    至此,就已经完成了通用链接的配置全过程,云打包后生效。

    #其他相关

    #云资源消耗说明

    托管通用链接所资源消耗的云服务器资源量非常小,文件小于0.5kb,仅你的iOS版App在:安装、登录、分享、支付时才会被联网请求(且设备会缓存通用链接的文件内容,缓存有效期内不会再次联网请求)。而阿里云正式版-开发者版(免费版)的前端网页托管,免费额度为:1GB/月;普通项目的服务空间,如果仅托管“通用链接”使用免费版也够用。

    #通用链接迁移指南

    阿里云公测版即将下线,需要将通用链接文件迁移到新的正式版服务空间的用户参考以下步骤:

    uniCloud阿里云正式版-付费版,支持“一键迁移”(即将上线)可省略步骤3和4

    1. 解绑域名与旧服务空间的绑定关系在uniCloud web控制台打开旧的服务空间 -> 前端网页托管 -> 参数配置 -> 域名信息 配置网站域名 -> 点击删除
    2. 绑定域名到新服务空间在uniCloud web控制台打开新服务空间 -> 前端网页托管 -> 参数配置 -> 域名信息 配置网站域名 -> 添加域名(添加后CNAME的值不会马上出现,需要过一会后点击右上角的刷新按钮,直至出现) -> 解析域名
    3. 指定要生成通用链接的服务空间在HBuilderX中点击项目的 manifest.json -> App模块配置 OAuth(登录鉴权)-> 微信登录(其他模块同理),点击自动生成 -> 选择“新开通的服务空间“ -> 下一步 -> 自定义域名 -> 完成
    4. 自动生成与部署直接提交云打包即可。注意:提交云打包,只是为了触发:“生成新的通用文件并自动部署到新服务空间”,用户的客户端无需更新。

    #客户端处理通用链接。

    可通过5+ API的plus.runtime.launcher判断应用启动来源,如果其值为”uniLink”则表示通过通用链接启动应。这时可通过5+ API的plus.runtime.arguments获取启动参数,通用链接启动的情况将返回完整的通用链接地址。 例:HBuilderX中自带的默认真机运行基座HBuilderX注册的通用链接:https://demo.dcloud.net.cn/ulink/

    #通用链接生成原理:

    1. 选择云空间获取云空间的默认/自定义域名
    2. 按提前制定的规范(uni-universallinks/DCloud appid)拼接URL
    3. 根据现有参数自动生成通用链接相关参数到manifest.json
    4. 发起云打包时读取证书的profile文件生成apple-app-site-association并部署到前面选定的云空间根目录的.well-known目录下(请勿删除该文件,否则通用链接将失效)
    #注意事项:
    • 通用链接指向的路径可以为空,他只是一种信息传递方式。可以简单地理解为:通过解析URL的“/”后的参数到apple-app-site-association中找到指定的包名并唤醒对应的APP
    • 通用链接内容保存在manifest.json中”云打包后生效”,被手机读取的时机是应用被安装的时候。如果你的通用链接内容有变化,你需要重新提交云打包,并重新安装一次应用才能生效
    • 通用链接最终托管在服务端,如有变动注意缓存的清理,例如尝试重启手机等操作

    如果你是本地离线打包或者由于某种原因你需要用传统的方式:私有化部署服务器来托管apple-app-site-association文件创建通用链接。你仍然可以通过手动配置manifest.json实现。详情:https://ask.dcloud.net.cn/article/36393#unilink

    #常见问题

    1.为什么我打开通用链接提示:The requested file was not found on this server.

    这是正常现象。通用链接并不要求是一个有效的路径,换句话说这个链接指向的目录允许为空。原理是访问这个链接时,iphone检测到当前域名为通用链接对应的域名,就读取域名服务器下的apple-app-site-association,然后根据域名后面的路径名称,验证并解析出要打开的app包名并唤醒对应的app。

    2.如何验证通用链接已经生效,有什么表现或者测试方案

    你可以将通用链接输入到iphone自带Safari浏览器中,下拉即可看到通用链接对应到应用名称和一个打开按钮,点击按钮即可直接在浏览器打开对应的APP。详情:点此查看演示视频

    3.使用微信登录、分享、支付等功能时,用户非首次调起微信,仍然出现二次跳转app

    微信SDK要求通用链接apple-app-site-association文件中 path不能带query参数,且末尾必须添加通配符*号。如下:

    {
        "applinks": {
            "apps": [],
            "details": [
                {
                    "appID":"8ARUHGUQNH.com.AppSample",
                    "paths": [ "/AppSample/*"]
                }
            ]
        }
    }
    
    

  • iOS通用链接(UniversalLink)配置详细流程

    iOS通用链接(UniversalLink)配置详细流程

    简介

    Universal Links 是苹果自iOS9.0推出的用于应用之间跳转的一种安全认证机制,主要用来通过HTTPS链接来无缝启动APP。手机中如果安装了支持该链接的APP就会直接进入到APP中。如果没有安装APP则会跳转到Safari浏览器中,展示H5页面。

    一、Universal Links 配置过程

    1. 登录苹果账号后,点击创建的APP 的Bundle ID,跳转到APP 信息页面。
    2. 记录下Team ID 和Bundle ID 备用。
    3. 勾选上 功能列表上的 ”Associated Domains“选项。
    iOS通用链接(UniversalLink)配置详细流程

    配置苹果后台

    1. 创建一个text空文本文件,去掉文件后缀,命名为apple-app-site-association(不能修改,且不能添加后缀)。
    2. 文件内添加json格式数据,内容如下
    {
        "applinks": {
            "apps": [],
            "details": [
                {
                    "appID":"8ARUHGUQNH.com.YHKJ.AppSample",
                    "paths": [ "/AppSample/*"]
                }
            ]
        }
    }
    

    如果一个域名下面有多端APP,可写作

    {
        "applinks":{
            "apps":[],
            "details":[
                {
                    "appID":"8ARUHGUQNH.com.YHKJ.AppSample",
                    "paths":["/AppSample/*"]
                }
                {
                    "appID":"8ARUHGUQNH.com.YHKJ.appManage",
                    "paths":["/manageAppSample/*"]
                }
            ]
        }
    }
    

    apps:为必写且固定为[ ]
    appID是指:TeamID.BundleId的组成
    paths:是一个支持的路径列表字符串数组,可以是一个也可以是多个,用于过滤可以跳转到App的链接,支持通配符*,通配符表示允许该域名下的任意路径。
    details数组中可以配置多个APP的信息,如果有多个APP需要支持Universal,则可以直接添加多个。
    严格区分字母大小写

    1. apple-app-site-association文件创建好后 发给后台,让后台放到域名的服务器根目录下,也可以在根目录中添加.well-known文件夹,将文件上传到.well-known文件夹下(.点一定不能少),对应连接分别为
    https://xxx/apple-app-site-association
    https://xxx/.well-known/apple-app-site-association
    xxx为服务端的域名
    
    1. 打开你的iOS工程,如下添加“Associated Domains”功能 和 域名地址,
      applinks:域名地址,Domains中的域名必须是使用applinks开头。
    iOS通用链接(UniversalLink)配置详细流程

    添加Associated Domains

    iOS通用链接(UniversalLink)配置详细流程

    添加域名地址

    二、测试Universal Link链接

    苹果提供了一个网页来验证我们编写的这个apple-app-site-association文件是否合法有效,
    https://search.developer.apple.com/appsearch-validation-tool/

    如果 Universal Link 配置成功,在iOS自带Safari浏览器中,打开 Universal Link 链接,下拉会出现应用入口,点击“打开”可以跳转至原生App;如打开微信的 Universal Link : https://help.wechat.com/app/ 如下图

    iOS通用链接(UniversalLink)配置详细流程

    打开微信通用链接

    二 、Universal Link 的运行机制原理

    1. 当App初次安装后或者更新版本后的第一次启动(第二次启动就不会),向工程配置的applinks:的域名请求apple-app-site-association配置文件。
    2. App自动的将apple-app-site-association配置文件向iOS系统配置。
    3. 当任何WebView发起UniversalLink的url的时候,系统遍历注册过的通用链接,如果命中则直接打开App触发Delegate方法。
    4. 如果没命中,WebView继续跳转加载url。
      以上都是系统默默替你做的,我们要做的就是确保配置的正确性。

    三 、注意事项

    1. 服务器的域名地址必须是HTTPS的,并且SSL证书必须通过苹果信任。苹果支持的HTTPS证书列表。
    2. apple-app-site-association名称不能变,不能加后缀,只能放在上面说的服务器位置。但是 iOS 会先去请求.well-known 路径,如果apple-app-site-association文件请求不到,再去请求根目录,所以如果想要避免服务器接收过多GET请求,可以直接把apple-app-site-association文件放到well-known目录下。
    3. 服务器上apple-app-site-association的更新不会让iOS本地的apple-app-site-association同步更新,Universal Link的更新 只有在APP第一次安装 和 更新版本的时候,如果Universal Link有变更,只能重新打包发版,然后让用户更新版本或者卸载重装。
    4. 跨域问题,如果由当前网页跳转Universal Link打开APP,当前网页的域名和Universal Link 的域名必须 不能一致,否则不会跳转,只会在当前的WebView里面跳转。
    5. 由浏览器或其他app应用跳转进入我自己的APP时接收回调,要在AppDelegate.m/SceneDelegate.m中实现下面回调方法:
    - (BOOL)application:(UIApplication *)application continueUserActivity:(NSUserActivity *)userActivity restorationHandler:(void (^)(NSArray> * _Nullable))restorationHandler {
        // NSUserActivityTypeBrowsingWeb 由Universal Links唤醒的APP
        if (![userActivity.activityType isEqualToString:NSUserActivityTypeBrowsingWeb]) {
            return YES;
        }
        NSURL *jumpUrl = userActivity.webpageURL; // 这个URL就是你跳转的那个URL,下载页地址,想要传参数可以直接在URL后面拼接
        // TODO:在这里进行跳转具体页面的操作
        return YES;
    }
    

    四 、Universal Links 与 URL Scheme

    另一种 外部唤起App 的方式是URL Scheme,但是URL Scheme有一些弊端。

    1. Universal Links 具有唯一性,比较安全。它是使用标准的HTTPS协议链接到你的web站点,所以一般不会被其它的APP所声明。而URL Scheme是由开发者自定义的,没有限制,任何App都可以用同一个名字,有些钓鱼App可以 设置知名的APP 的URL Scheme 来欺骗用户。
    2. URL Scheme可以通过canOpenURL判断用户是否安装App,但是只有安装了APP才能跳转,未安装则没有效果。而Universal Links 如果安装了就跳转APP,如果未安装就跳转网页展示你网站的内容,比较灵活。
    3. 使用scheme跳转系统会弹框提示,替换成UL链接后可以实现无缝跳转。

    接入微信universal link微信校验不通过指南

    http://www.taodudu.cc/news/show-2894874.html?action=onClick

    IOS – 通用链接(UNIVERSAL LINK)范文指南

    https://www.freesion.com/article/4743243660/

    配置iOS通用链接(Universal Links)

    https://www.kancloud.cn/wangking/uniapp/1875048

    微信支付IOS UniversalLink接入指南

    iOS接入指南:https://developers.weixin.qq.com/doc/oplatform/Mobile_App/Access_Guide/iOS.html

  • windows下创建ios打包证书的详细流程

    windows下创建ios打包证书的详细流程

    当我们在hbuilderX、apicloud或其他云打包的平台编译app的时候,需要ios打包证书:.p12证书文件和.mobileprovision描述文件。

    但是根据苹果官方提供的方法,这个证书的创建需要mac电脑,而我们大部分开发人员都没有mac电脑,那么怎么生成ios证书呢?

    你可以使用本站的生成ios证书的工具:https://www.yunedit.com/createcert

    详细的生成流程如下:

    1、假如你还没有苹果开发者账号,你可以参考下面的文章先注册苹果开发者中心: https://blog.csdn.net/handsome0916/article/details/113779348

    2、登录本站(香蕉云编)控制台,创建csr文件,并将这个创建好的csr文件下载到你的电脑本地

    2、登录苹果开发者中心,假如你已经按照第一步注册并缴费成为开发者,会见到Certificates菜单. 点击Certificates菜单,点蓝色加号,创建证书,假如不知道苹果开发者中心在哪里,可以看第一步。 记得创建证书的时候一定要选择ios distribution app store and ad hoc类型的证书,可千万别选择了apple distribution类型或选择了develpment类型的证书,选择错了你后面打包就会失败。

    创建的过程中,会要求我们上传刚才创建的csr文件,上传刚才从本站生成的csr文件,就可以生成cer文件。

    3、创建cer证书成功后,将这个cer证书下载到我们电脑本地。

    4、回到本站(香蕉云编)的控制台,在对应的行里面,上传这个cer文件,就可以生成最终的.p12格式的证书了。

    到这里,p12格式的证书我们已经创建成功了,下面我们来讲述如何生成.mobileprovision描述文件

    1、登录苹果开发者中心控制台,点击Identifiers,点击蓝色加号,创建一个appid,这个appid要跟你在hbuilder打包用的包名一致,假如已经创建,则跳过这一步。

    2、点击profiles,开始创建描述文件,创建的时候选择app store类型,假如你选择的是ad hoc类型,则看第四步。

    3、创建的过程中会要求我们选择第一步创建的appid:。

    4、假如你创建的是ad hoc类型的profile(假如你创建的是app store类型的profile则不需要这一步),则创建过程中,还需要提供测试手机的udid,你可以使用你的iphone手机,打开本站(香蕉云编)的这个获取手机udid的工具,获取手机的udid: https://www.yunedit.com/udid

    到这里,已经介绍完全部的流程,谢谢大家!

  • 2023完整iOS APP发布App Store上架流程指南1

    2023完整iOS APP发布App Store上架流程指南1

    如果你是新手,将在这里清晰发布到App Store整个上架流程,还有相应的流程解决方案。
    如果你上架过iOS APP,这里会了解到有更快捷的上架过程。
    上架iOS最基本需要一个付费的开发者账号,还没有的话申请一个或者借用。
    通常也还需要一台Mac电脑,不过这里介绍到不用Mac在Windows系统中直接发布iOS APP到App Store。
    如果没有Mac,也无所谓。
    申请开发者账号介绍
    iOS APP上架需要创建一个APP ID、申请iOS发布证书、再用iOS证书打包IPA,然后在上传IPA到App Store
    上架过程分七个步骤,按步骤一步步来,清晰了步骤就跟简单了,欢迎交流!
    1、创建APP身份证(App IDs)
    2、申请发布证书
    3、申请发布描述文件
    4、Windows下上传证书编译打包
    5、在iTunes Connect创建App
    6、Windows下上传IPA到App Store
    7、上传好IPA回到iTunes Connect填写APP信息并提交审核
    一、创建唯一标示符App IDs
    APP IDs在后面创建发布文件,创建APP时都要用到。
    首先打开开发者中心https://developer.apple.com/cn/,进入证书页面。
    1.1点击证书、ID及配件文件,进入设置。

    1.2选择App IDs –>点击+创建一个新的App ID

    其中有两项需要你自己填:
    第一项Name,用来描述你的App ID,这个随便填,没有什么限制,最好是项目名称,这样方便自己辨识(不允许中文)
    第二项Bundle ID (App ID Suffix),这是你App ID的后缀,需要仔细填写。用来标示我们的 app,使它有一个固定的身份,和你的程序直接相关。填写 Explicit App ID 的格式为:com.company.appName,一定照着格式写,写个方便记的,后面很多地方要用到。
    第三项App Services,默认会选择2项,不能修改,其它根据自己需要的服务选择上,然后点击Continue确认,下一步。

    检查下没有错的话直接点击Register后点击Done完成App ID的创建。

    上传app包文件到app store后台。
    方法1.借助辅助工具appuploader,首先按照流程注册登录后,即可直接创建证书,通过hbuilder上传
    创建ios(.p12)证书
    1.点击苹果证书

    2.新增苹果证书

    3.输入证书密码:这个密码不是账号密码,而是一个保护证书的密码,是p12文件的密码,此密码设置后没有其他地方可以找到,忘记了只能删除证书重新制作,所以请务必记住密码。还有为了安全起见,密码不要太简单。
    证书名称是你为了在证书列表里面便于区别的一个字符,自己好辨识就可以,尽量是是字母和数字之类
    4.选择证书类型: 带distribution的是发布类型,带development的是开发类型。apple类型=ios+mac,所以开发时选择ios app development和apple development 类型都是可以的

    1. 选择bundle ID:只有部分类型的证书需要选择bundle id,例如推送证书。因为大部分证书是不和app关联的。而是通过描述文件profile文件关联app。
    2. 使用appuploader服务同步:如果期望制作好证书后在其他电脑上同样可以下载到这个证书,或者和你同事同步此证书,则需要勾选使用appuploader服务同步。否则您需要手动管理p12文件在不同电脑之间的传输,并且一但创建下载后,无法在其他电脑下载,只能手动复制文件过去。一般情况下,推荐使用appuploader服务同步。
    3. 证书类型说明:IOS开发选择apple development或者ios app development 类型
      ios 发布选择 apple distribution或者 ios distribution (app store and ad hoc)
      开发推送证书选择 apple push notification service ssl (sandbox)
      发布推送证书选择 apple push notification service ssl (sandbox & production)
      其他证书不是很常用,可以自行百度各种证书说明。

    8.官遇到问题,首先登录文章开通的苹果开发官网。检查是否有权限/是否被停用/是否过期/是否有协议需要同意。在右上角切换账号检查所关联的账号是否功能正常。Apple邮箱会接收到许多通知消息,如IPA上传,账号发生变化,被停用,都会有消息提示。

    9.上架版本需要使用正式的证书(apple distribution),开发测试用开发证书(apple development)

    10.一般都要创建两个证书一个用于开发,一个用于上架,如果有支付内容,还必需要 Apple Pay 的证书。证书无需创建太多,apple对证书有数量限制,一般3个开发证书就不让创建更多同类型的证书了。
    11.点击p12下载到电脑。

    添加测试设备UDID
    1.点击udid

    2.新增udid

    创建描述文件
    1.点击描述文件

    2.点击新增描述文件,在弹出框里面选择要安装测试到的设备,如果是发布类型无需选择设备。选择使用的证书,如果忘记是哪个 了可以选择全部证书。

    3.描述文件类型说明:带app store类型的是发布类型,带development的是开发类型,push没有描述文件,所以不要问推送选择哪种描述文件类型,os开发选择ios app development类型,发布app的时候选择app store类型。(ps:除了APP Store类型的描述文件外,其他的描述文件都需要选择测试设备)
    4.点击下载按钮下载桌面

    测试安装App
    1.以HBuilder打包Vue项目为例,打开详细设置进行设置完成后,点击保存。

    2.官菜单项点击‘发行-> 云打包-打原生包’,出现如下图所示弹框,取消广告勾选,没有错误提示,选择刚才制作的p12和.mobileprovision文件,输入刚才设置的证书密码。点击打包,等待打包未完成(仅以ios为例)

    3.官打包完成后点击确定“OK”按钮查看打包状态信息,打包完成后,保存安装包到目标文件,发送到手机端安装即可运行。

    4.测试设备:如果选择的类型是ios app development 类型,则全部测试设备旁边必须有测试设备并且勾选上,如果没有显示测试设备,点击框框下面的添加测试,然后把测试设备的udid输入,把ios设备连接到当前pc,会自动获得设备的udid。 如果app编译后无法安装到设备,可能是因为设备的udid没有添加进入描述文件,则需要添加描述文件后重新编译。

    方法2.Xcode上传,这里简单讲下步骤:

    构建打包ipa文件

    打包成功后,选择具体包版本,点击Distribute App。

    选择App Store Connect。(Ad Hoc选项代表出包给测试人员测试)

    点击next,后面几个步骤都点击Next按钮,选项配置不用管都按默认的走。

    最后点击Upload,就开始上传了,耐心等待。我大概6分钟就上传成功了(包文件如果大或者网速慢时间相对会比较长)。这是我上传成功的截图:

    上传成功后,登录App Store Connect,进入app详情页面,点击顶部TestFlight,在构建版本中就可以看到你刚上传的版本,状态一般会显示正在处理。

    如果等了很久(10分钟左右吧)刷新页面还是没看到上传的构建版本,那么就是ipa包被拒绝了,这时候一般会收到拒绝原因的邮件。我就是这种情况?(包含过时的UIWebView),邮件如下:

    解决问题,重新上传就行了。 最终上传构建的app版本状态显示为准备提交才能提交审核,状态从正在处理变为准备提交我等待了20分钟左右,这个时间是不固定的,看具体情况,类似那种几百兆的app,时间就会特别长。

    选择APP版本,提交审核
    登录App Store Connect,进入App详情页面,找到构建版本,然后选择一个最新提交的构建版本。

    滑动页面到最顶部,点击存储,然后再点击右边的添加以供审核,确认相关信息后,就提审成功了。

    接下来就是等待审核,苹果审核时间大多集中在晚上凌晨或者第二天早上6-8点, 顺利的话一般2天左右就有审核结果。

    等了2天,“不出意外”,我提交的审核被无情的拒绝了:

    这种情况没办法,只能根据实际情况去进行修改,或者做出必要的解释说明。被拒绝多次也是很常见的,反正耐心的去解决苹果提出的问题,最终都会通过审核的。

    至此,iOS app上架app store流程就结束了。

    四、上传证书编译打包
    这里以APPcan平台为例
    4.1、选择完工的APP,点击应用打包,选择证书管理,iOS发布证书,上传之前申请的发布证书和申请时设置的密码及发布描述文件
    点击检验,APP ids将自动出现,然后保存。

    4.2选择云端打包,iOS打包,没有推送证书就不勾选支持推送,选择发布版证书,禁用http请求容易审核通过。
    设置好版本号,选择appcan服务器,点击生成安装包。

    4.3安装包生成成功后,下载保存到电脑,这个ipa包就可以上传到App Store了

    五、在iTunes Connect创建App
    5.1回到软件,点击ItunerConnect,进入iTunes Connect进入创建APP。

    5.2选择我的APP点击左上角+号选择新建APP,输入你的应用名称,语言,套装ID,之前在开发者中心创建的对应APP IDs
    (与创建iOS证书所选的appid要一致,这样用iOS证书打包的IPA,上传就能关联到了)
    sku不能写中文,点击创建。

    5.3这里提示要用到Xcode或者Application loader提交IPA,等下用Appuploader直接在Windows环境下上传ipa,不用Mac了。
    现在APP各项信息都没填写,等下把IPA上传成功了再填写。
    这里构建版本旁边还没有出现+号,后面上传了IPA就会出现,等下会用到。

    六、Windows环境下上传IPA到App Store
    6.1打开Appuploader程序,点击Upload.

    6.2选择刚生成的iap包

    6.3Appuploader将自动上传你的IPA,当出现以下提示时,说明上传成功,点击deail可以查看APP信息。

    七、回到iTunes Connect提交审核
    7.1上传好了IPA,然后回到iTunes Connect,进入填写信息的页面,下边有一个构建版本的选项,之前这旁边没有+号的,如果上传成功了,过几分钟旁边会出现一个加号按钮,点击一下+然后会出现你刚上传的APP,点击完成即可。
    注意:如果一段时间后没有出现+号,可能ipa不符合要求,会有个反馈邮件过来,根据反馈的问题修改后重新上传。

    7.2然后设置好APP相关的信息,截图、类别,价格、销售服务等。

    7.3设置好相应的APP信息后,点击提交以供审核。

    7.3提交审核回到我的APP查看会提示正在等待审核,审核要几天时间,常登陆看看审核情况

    如果变成可供销售,恭喜你~上架成功了,如果显示被拒绝,点击查看问题,根据反馈修改再重新上传。

    更多上架来源:

    https://blog.51cto.com/u_15721717/5607843

    https://baijiahao.baidu.com/s?id=1754992736985413557&wfr=spider&for=pc

    https://www.jianshu.com/p/ed9e1d49ed16