小编Mar*_*ols的帖子

没有确认提示的自定义URL方案(Swift)

我找到了两个从Safari网页打开我的应用程序的选项:在我的应用程序项目Info.plist或Apple的Universal Linking中创建的自定义URL方案.显然,自定义URL方案是最容易设置的方案,但我遇到的问题是Safari显示一个确认窗口,询问"打开myapp?" 首先,用户必须在应用实际打开之前点击确定.我希望我的应用程序在打开方案时自动打开,我被告知唯一的方法是通过Universal Linking(如果不是这样,请纠正我).但是,如果这是真的,我想知道是否有可能以任何方式将所需apple-app-site-association文件放在http://域而不是https://?根据官方的Apple文档,正确的通用链接的格式明确地开始,https://但是https://如果没有重定向几次就无法加载我的域名,这会混淆我为在应用程序中执行其他任务而编写的Web服务.这个问题之后我留下的两个主要问题:

1)使用自定义URL方案(myscheme://)来解决确认提示是否真的不可能?如果不是不可能,我该怎么做?

2)如果我必须使用Apple Universal Linking,我可以使用http://域吗?如果是这样,我该怎么办?现在,如果我加载通用链接,它只显示apple-app-site-association文件中的字典,我很确定不应该发生.我被告知它应该NSUserActivity向我的应用代表发送一个对象.如何通过http://链接完成此操作?

ios swift ios-universal-links custom-scheme-url

9
推荐指数
1
解决办法
3200
查看次数

CAShapeLayer 的笔画停在错误的点?

我画了一个简单的圆形进度视图,如下所示:

let trackLayer:CAShapeLayer = CAShapeLayer()
let circularPath:UIBezierPath = UIBezierPath(arcCenter: CGPoint(x: progressView.frame.width / 2, y: 39.5), radius: progressView.layer.frame.size.height * 0.4, startAngle: -CGFloat.pi / 2, endAngle: 2 * CGFloat.pi, clockwise: true)
trackLayer.path = circularPath.cgPath
trackLayer.strokeColor = UIColor.lightGray.cgColor
trackLayer.lineWidth = 6
trackLayer.fillColor = UIColor.clear.cgColor
trackLayer.lineCap = kCALineCapRound
progressView.layer.insertSublayer(trackLayer, at: 0)
let progressLayer:CAShapeLayer = CAShapeLayer()
progressLayer.path = circularPath.cgPath
progressLayer.strokeColor = UIColor.blue.cgColor
progressLayer.lineWidth = 6
progressLayer.fillColor = UIColor.clear.cgColor
progressLayer.lineCap = kCALineCapSquare
progressLayer.strokeEnd = 0
progressView.layer.insertSublayer(progressLayer, above: trackLayer)
Run Code Online (Sandbox Code Playgroud)

在某个事件中,我尝试更新progressLayer

if let sublayers = progressView.layer.sublayers …
Run Code Online (Sandbox Code Playgroud)

cashapelayer uibezierpath swift

5
推荐指数
1
解决办法
752
查看次数

社交网络应用如何实时更新其 UI?

我想知道当另一个用户与应用程序的用户交互时,社交网络应用程序(例如 Twitter、Facebook 和 WhatsApp)如何实时更新其用户界面。举个我能想到的最好的例子:当你在 WhatsApp 中打开一个聊天窗口时,当你与之聊天的用户与你互动时,UI 会自动更新(无需任何用户操作)。消息显示在您的屏幕上而不会刷新,并且当您的聊天伙伴离线或重新在线时,屏幕顶部的“上次查看”状态会自动更新。我可以想到两种方法来实现这一点:

  1. 远程推送通知:这种方法在我看来是“最干净”的方法,但它可能也是最危险的方法。content-available在用户执行某些操作时使用静默通知 ( ) 将数据传递到另一台设备,可能会为您节省大量 HTTP 请求,从而使您的应用程序消耗更少的数据和 CPU 使用量。这种方法的风险在于,用户可以轻松禁用所有推送通知以节省电池电量(包括静默通知),然后您的应用将无法远程获得事件通知。
  2. 局部 UI 刷新:这种方式显然是最安全的,但我认为它真的很“讨厌”,最终每个人都会感受到它的缺点。不断刷新 UI 并从数据库中重新检索数据以确保向用户显示最新消息和状态是安全的,因为您的应用程序不必依赖于设备的电池和后台模式设置,但是缺点是这会使您的应用程序消耗大量数据和电池电量,这对用户的数据计划和他的设备不利。我也不认为苹果会批准一个消耗如此多数据和电量的应用程序。

我刚刚在我自己的应用程序中实现了一个聊天功能,我想启用与 WhatsApp 使用的相同的实时 UI 更新。什么是最好的方法来做到这一点?我应该使用上述两种方法之一还是有人可以想到另一种方法来做到这一点?顺便说一下,我是一个相对较新的程序员,最近刚刚学会了如何开发 iOS 应用程序 (Swift)。我离专业还很远,所以请在解释和工作方法能力上放轻松。谢谢!

ios whatsapp

4
推荐指数
1
解决办法
806
查看次数