OAuth + NativeScript 这是第三部分系列的最后一部分。 在第1部分中,我将基于NativeScript的POV作为解决方案。 在第2部分中,我讨论了使用Angular + NativeScript进行更改检测。 在最后一部分中,我将介绍如何将OAuth工作流程集成到NativeScript应用程序中。 以下内容假设您对OAuth 2.0有所了解。 OAuth 在NativeScript中使用OAuth提供了一些障碍。 特别是如果您使用Google作为提供商。 过去(2-3年前),您可以在本机应用程序中执行OAuth,只需将Web视图嵌入到您的应用程序中,允许用户浏览工作流程并查看弹出的code或token的URL。另一端。 如今,Google已消除了该集成渠道(有关安全性,可用性…… yada yada yada😜),您需要使用真正的OS浏览器来引导用户完成工作流程。 这使其更加复杂。 现在,您不仅要查看嵌入式浏览器的URL,还必须了解操作系统将自定义协议的链接路由到您的应用程序的能力。 所以现在看起来像这样 使用callbackURL(例如customprotocol://google/oauth浏览器打开到OAuth工作流程 用户通过工作流程 在auth工作流程结束时,浏览器将重定向到customprotocol://google/oauth?code=blahblah 发生这种情况时,操作系统将拦截该链接并将事件路由到您的应用程序。 因此,您需要侦听它们,拉出code参数,然后从OAuth提供程序请求令牌。 对于iOS,这表示为: 提供一个SFSafariViewController (上面的步骤1)。 通过实现侦听UIApplicationDelegate (上面的步骤4)中的链接: -(布尔)应用程序:(UIApplication *)app openURL:(NSURL *)url 选项:(NSDictionary *)选项 最后,对于NativeScript,您需要: SFSafariViewController : … 让safariVC = new SFSafariViewController({URL:url}); page.ios.presentViewControllerAnimatedCompletion(safariVC,true,null); 实施自定义应用程序委托: 导出类AppDelegate扩展了UIResponder实现 UIApplicationDelegate { 公共静态ObjCProtocols = [UIApplicationDelegate]; applicationOpenURLOptions?(app:UIApplication,url:NSURL, […]
从iOS 10开始,移动版(iPhone和iPad)上的Safari开始允许开发人员以内联方式自动播放视频,前提是您要播放的视频满足某些条件。 在此之前,您的视频不会自动内联播放,并且在播放时只能全屏播放。 进行这些更改是为了防止“具有声音自动播放功能的网站”,如果您曾经浏览过手机上的某个站点并且开始播放烦人的视频广告,则可能是由于内联视频自动播放功能引起的,但还有其他原因内联视频HTML属性的合法使用。 视频作为GIF动画 我们都同意,GIF很酷,但是在幕后它们却是巨大的对象,就性能而言,GIF绝对不是网络上的最佳格式。 GIF将比例缩放到几兆字节的情况并不罕见,具体取决于质量,帧速率和长度。 如果您想提高网站的加载性能并帮助用户减少数据使用量,那么动画GIF就是与该目标不兼容的。 解决此问题的一种方法是将这些巨大的文件转换为压缩的精益视频,这样既可以保持较高的分辨率,又可以为用户节省大量数据。 自动播放静音 简而言之,视频要在移动浏览器中内联播放,需要将以下关键属性添加到video标签中(取决于移动平台)。 自动播放 静音 内线 Chrome For Android仅需要前两个,但是如果您使用的是Safari,则需要添加iOS 10中引入的playsinline属性。跨浏览器兼容的代码如下所示: 在最新的浏览器和平台上,这将使您的视频内联自动播放,并具有loop属性,使您的视频实质上充当GIF。 它不起作用! 我在上一段的最后一句话中强调了大部分内容,因为您肯定会遇到无法使用的情况。 我的具体案例是运行自定义WebView渲染Angular应用的iOS 10和11 iPhone。 根据iOS autoplay技术指南中的规定,该应用程序中的视频标签会在用户与页面互动后立即尊重autoplay属性,但只会忽略playsinline属性并全屏播放视频。 最终,它需要花很多时间进行Google搜寻和反复试验,但如果遇到相同的错误,请检查以下内容以使其正常运行: 如果您要定位的是iOS 11,请确保设备未在低功耗模式下运行。如果您使用的是Android版Chrome浏览器,则数据保护程序模式也会阻止自动播放。 在您的WebView中,确保为WebView设置了allowsInlineMediaPlayback配置。 我用了: webView.configuration.allowsInlineMediaPlayback = true 如果 #available ( iOS 10.0,*){ webConfiguration.mediaTypesRequiringUserActionForPlayback = [] } 其他 { //早期版本的后备 webConfiguration.mediaPlaybackRequiresUserAction = false } 安装iPhone-Inline-Video:如果您想支持iOS的早期版本(8和/或9)甚至是iOS 10的嵌入式视频播放,正如我发现的那样,此库“在iOS 8和iOS上启用iOS 10的playsinline属性9(几乎是polyfill)”。 静音属性问题 […]
希望有人能帮忙。 我正在开发一个基于Angular的应用程序。 我在量angular器的帮助下自动完成了端到端testing。 我有一个全局variables设置在我的应用程序中被称为“selectedPlatform”,它传达了哪个平台(iOS / Android)我有我当前的应用程序构build。 我需要访问这个variables来写我的testing用例。 任何有关这方面的帮助非常感谢。 谢谢,马丹
我想创build一个UIView自定义TableViewCell的圆angular。 问题是当表格视图加载时,它只是围绕视图的左上angular而不是底部。 现在,当我滚动表格视图一点,它也围绕视图的左下angular。 我已经尝试了所有可能的方法,但是我无法理解它。 我也附上截图以及复制代码。 谢谢 下面是我在自定义视图单元格类中使用的代码。 class FoodTVCell: UITableViewCell { var food: Food! @IBOutlet weak var foodPicture: UIImageView! @IBOutlet weak var foodName: UILabel! @IBOutlet weak var foodRating: UIImageView! @IBOutlet weak var deliveryTime: UILabel! @IBOutlet weak var minOrder: UILabel! @IBOutlet weak var category: UILabel! @IBOutlet weak var foodPriceLabelBG: UIView! @IBOutlet weak var foodPrice: UILabel! override […]
我有一个tableView下面的textview,都是相同的Backgroundcolor,所以它看起来就像它的一个视图。 现在,我希望textview的底部四舍五入,但不是顶部的(因为你可以看到textview和tableview之间的差距)。 我在这里find了一些答案,但不知何故,它只是使左下angular变圆,而不是正确的? 我也尝试改变arrays内的顺序,没有工作。 然后我试了一下左边的angular落,工作。 但只有右上angular没有工作?! 这是我目前所拥有的 let rectShape = CAShapeLayer() rectShape.bounds = self.eventDescription.frame rectShape.position = self.eventDescription.center rectShape.path = UIBezierPath(roundedRect: self.eventDescription.bounds, byRoundingCorners: [.BottomLeft, .BottomRight], cornerRadii: CGSize(width: 20, height: 20)).CGPath self.eventDescription.layer.mask = rectShape
我试图在SceneKit中重新编码摄像头pipe理。 为此,我使用UIPanGestureRecognizer围绕一个物体(在这种情况下围绕场景的中心)旋转相机。 接下来,我得到不同的比例或长度来确定在相机所在的虚拟球体的轴(X,Y,Z)上添加的angular度(cameraOrbit in code)。 我的问题是,我使用相机的位置来确定在球体上添加的angular度。 但是这个位置是不变的。 当我改变球体旋转时,子节点相机的位置永远不会更新。 那么angular度不会改变。 import SceneKit import UIKit class SceneManager { private let scene: SCNScene private let view: SCNView private let camera: SCNNode private let cameraOrbit: SCNNode private let cameraRadius: Float init(view: SCNView, assetFolder: String, sceneName: String, cameraName: String, backgroundColor: UIColor) { self.view = view self.scene = SCNScene(named: (assetFolder + […]
我是新来的Mac,所以为了我已经安装了Xcode,并成功地为iOS添加了平台。 当我给adb devices我无法检测到我的iPhone的设备名称,但是当我连接Android和adb devices我得到我的设备。 当我给ionic build ios我收到以下错误。 我不知道如何在iphone中启用开发人员选项 ===构build目标myFirst的项目myFirst WITH CONFIGURATIONdebugging=== 检查依赖关系 签署“myFirst”需要一个开发团队。 在项目编辑器中select一个开发团队。 SDK'iOS 10.3'中的产品types'Application'需要代码签名 **存档失败** 以下生成命令失败:检查依赖关系(1失败) 错误:命令错误代码为65:xcodebuild和args:-xcconfig,/ Users / subbarao / Desktop / myFirst / platforms / ios / cordova / build-debug.xcconfig,-workspace,myFirst.xcworkspace,-scheme,myFirst,-configuration ,debugging,-destination,通用/平台=的iOS,-archivePath,myFirst.xcarchive,归档,CONFIGURATION_BUILD_DIR = /用户/苏巴拉奥/桌面/ myFirst /平台/ IOS /编译/设备,SHARED_PRECOMPS_DIR = /用户/苏巴拉奥/桌面/ myFirst /平台/ IOS /编译/ sharedpch
我们的Ionic 2移动应用程序被苹果拒绝,原因如下: 我们注意到,用户被带到Safarilogin或注册一个帐户,这提供了一个糟糕的用户体验。 请修改您的应用,以便用户在应用中login或注册一个帐户。 Auth0 Lock为用户提供一个注册button,我们通过锁的signUpLink选项来configuration。 此button会在应用程序外部的系统浏览器(Safari)中打开注册页面,这显然不适用于Apple。 在我们升级到Ionic 2(Ionic 2 beta 11)的最新版本之前,锁会打开InAppBrowser中的链接,苹果可以接受。 由于Ionic 2版本的不同,我想这可能是一个离子问题。 我确定我已经安装了Cordova InAppBrowser插件 。 它在我的config.xml文件中以<plugin name="cordova-plugin-inappbrowser" spec="~1.6.1" /> ,当我在XCode中打开.xcproject文件时,插件出现在Plugins文件夹中。 我也使用open('https://www.google.com/, '_blank');手动testing了InAppBrowser open('https://www.google.com/, '_blank'); 这应该打开InAppBrowser。 关于Auth0 Lock的代码和注册页面的URL都没有改变。 Auth0 Lock版本:10.6(10.11也试过,没有解决的问题) 离子版本:2.1.0操作系统:iOS 自从Ionic 2testing版11以后,会有什么变化会影响在InAppBrowser中打开链接?
我正在研究一个可以移动的iPhone机器人。 其中一个挑战就是估计到物体的距离 – 我不希望机器人碰到物体。 我看到一些非常昂贵(约1000美元)的激光测距仪,并希望用iPhone模拟一个。 我有一个或两个摄像头和两个激光指针。 激光指示器以约6英寸的间隔安装,angular度相对于照相机的激光angular度是已知的。 相机相互之间的angular度是已知的。 激光指向摄像头前方,在摄像头上创build2个点。 是否可以通过查看摄像机图像中的点之间的距离来估计与点的距离? 激光形成一个梯形从 /wall \ / \ /laser mount \ 当激光安装架靠近墙壁时,点应该彼此远离。 我说的是可行的吗? 有没有人做过这样的事情? 我需要一个或两个摄像头进行这种计算吗?
我已经花了很多时间,但仍然没有明显的结果。 我的量angular器testing使用的是Firefox和Chrome浏览器。 但用Safari浏览器他们不。 在这种情况下,量angular器testing不会同步执行,并且closures同步的运行testing也会混淆所有testing。 有没有人成功的Safari浏览器上运行他的量angular器testing?