小编Sae*_* Oh的帖子

Cocoa webview UserAgent"webkit-legacy"问题

我解决了这个问题 看下面的选定答案!

我一直在努力寻找导致OSX Cocoa应用程序的WebView与Safari不同的原因.事实证明,用户代理是不同的(有点明显吗?),我正在访问的网站不知道如何处理.

令人惊讶的是,这是https://messenger.com(Facebook聊天).

问题是它不会在屏幕上显示图片.它确实加载,但实际上并没有显示.看看这个..

测试应用的屏幕截图

如果你看看我编号为'2'的区域,你会看到空的空间.我没有审查那个.它只是空的.

所以这是我原来的问题链接:使用WebKit的简单Swift Cocoa应用程序:上传图片不起作用

我解决了第一个问题(感谢答案:D),但第二个问题仍然存在.

  1. 共享图片没有显示 - 我在图片中标记为2.
    • 再次,从其他浏览器或已发布的应用程序,它显示我与参与者共享的图片,如下所示.(当然我审查了这些照片) 显示共享图片的浏览器示例

为了调试这个,我打开了Inspect Element,我发现了这一点.

<body class=" webkit-legacy webkit mac x1 body_textalign Locale_en_US _z4_" dir="ltr">
Run Code Online (Sandbox Code Playgroud)

当我从Safari加载完全相同的页面时,我会看到:

<body class="safari webkit mac x1 body_textalign Locale_en_US _z4_" dir="ltr">
Run Code Online (Sandbox Code Playgroud)

所以我决定从我的应用程序的WebView和中提琴中替换该行!有用!所以...

TLDR:每次加载视图时如何才能完成这项工作?

我试图找到一些方法来设置我的用户代理到Safari,但我不能让它工作.有什么建议吗?

css macos cocoa webkit swift

15
推荐指数
1
解决办法
627
查看次数

每天报告数千个与 OkHttp 相关的问题(连接、未知主机、DNS 等)

设置

我有一个正在生产中的应用程序,每天有数千名用户使用。

我使用的是 Retrofit2 版本 2.9.0(最新)

我的build.gradle下面。

def retrofitVersion = '2.9.0'
api "com.squareup.retrofit2:converter-gson:${retrofitVersion}"
api "com.squareup.retrofit2:converter-scalars:${retrofitVersion}"
api "com.squareup.retrofit2:adapter-rxjava2:${retrofitVersion}"
api "com.squareup.retrofit2:retrofit:${retrofitVersion}"
Run Code Online (Sandbox Code Playgroud)

我集成了 Firebase Crashlytics 并使其能够在try-catch块中报告任何与 API 相关的异常。

例如

def retrofitVersion = '2.9.0'
api "com.squareup.retrofit2:converter-gson:${retrofitVersion}"
api "com.squareup.retrofit2:converter-scalars:${retrofitVersion}"
api "com.squareup.retrofit2:adapter-rxjava2:${retrofitVersion}"
api "com.squareup.retrofit2:retrofit:${retrofitVersion}"
Run Code Online (Sandbox Code Playgroud)

已知

现在,在 Crashlytics 中,我每天都会收到数千份报告,称存在一些错误。在讨论这些错误之前,我想向您保证用户已使用适当的网络权限连接到互联网。我看到用户当时正在打开其他内容的日志。所以这些错误看起来确实是随机的。

埃罗斯

  1. 未知主机异常
Non-fatal Exception: java.net.UnknownHostException: Unable to resolve host "my-host-address.com": No address associated with hostname
       at java.net.Inet6AddressImpl.lookupHostByName(Inet6AddressImpl.java:156)
       at java.net.Inet6AddressImpl.lookupAllHostAddr(Inet6AddressImpl.java:103)
       at java.net.InetAddress.getAllByName(InetAddress.java:1152)
       at okhttp3.Dns$Companion$DnsSystem.lookup(Dns.java:5)
...
Caused by android.system.GaiException: android_getaddrinfo failed: EAI_NODATA (No address associated with …
Run Code Online (Sandbox Code Playgroud)

dns android kotlin retrofit okhttp

11
推荐指数
1
解决办法
3283
查看次数

Jetpack Compose 导航:从具有相同路线(参数除外)的屏幕弹出到屏幕

导航撰写版本2.4.0-alpha06

我有一个导航抽屉Scaffold,其中部分项目是由 ViewModel 动态生成的。

示例项目有

  • A
  • C ...
  • 设置

其中 A、B、C... 都共享相同的Screencalled Category,只是传递了不同的参数(例如 Category/A、Category/B)。

在我的里面Scaffold

...

val items = viewModel.getDrawerItems()
// This gives something like 
// ["Home", "Category/A", "Category/B", "Category/C", ..., "Settings"] 
// where each String represents "route"

...

val backstackEntry = navController.currentBackStackEntryAsState()
val currentScreen = Screen.fromRoute(
    backstackEntry.value?.destination?.route
)
Log.d("Drawer", "currentScreen: $currentScreen")

items.forEach { item ->
    DrawerItem(
        item = item, 
        isSelected = currentScreen.name == item.route, 
        onItemClick = {
            Log.d("Drawer", "destinationRoute: ${item.route}") …
Run Code Online (Sandbox Code Playgroud)

android kotlin android-jetpack-navigation android-jetpack-compose android-jetpack-compose-scaffold

8
推荐指数
2
解决办法
2万
查看次数

使用WebKit的简单Swift Cocoa应用程序:上传图片不起作用

我决定把我自己的FB的聊天应用程序,只显示https://messenger.comWebView尝试其他"免费增值"的应用程序后.

ViewController.swift只有几行代码在Web视图上加载URL

import Cocoa
import WebKit

class ViewController: NSViewController {

    @IBOutlet weak var webView: WebView!
    override func viewDidLoad() {
        super.viewDidLoad()

        let url = NSURL(string: "https://messenger.com")
        let request = NSURLRequest(URL: url!);
        webView.mainFrame.loadRequest(request);
    }

    override var representedObject: AnyObject? {
        didSet {
        // do nothing
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

除了添加NSAppTransportSecurityinfo.plist的密钥以通过HTTPS连接解锁HTTP流量之外,我还没有做任何其他设置.

请先看看这张图片.

测试应用的屏幕截图

除了两件事,一切看起来都很好.

  1. 上传图片不起作用 - 我在图片中标记为1.

    • 通常(如在其他已发布的应用程序或Web浏览器中),如果您单击该图标,它会显示一个浏览器来上传如下图片. 浏览器上传图片的示例

    • 我的应用完全忽略用户点击该图标,因此我无法将任何图片上传到聊天中.有趣的是,如果我将图片拖放到webview,它上传就好了.

  2. 共享图片没有显示 - 我在图片中标记为2.

    • 再次,从其他浏览器或已发布的应用程序,它显示我与参与者共享的图片,如下所示.(当然我审查了这些照片) 显示共享图片的浏览器示例

    • 我的应用程序尝试加载图片,但不显示它们.我可以看到它试图加载,因为我在加载时看到循环进度指示器.

为什么?

  1. 我怀疑可能有一种方法可以监听在WebView文件浏览器中链接的JavaScript 以及类似的东西?

  2. 这个我不知道.我登录了Messenger(基本上是Facebook),所以我认为session这不是问题.也许一些jQuery加载问题?

我该怎么做才能解决这些问题?

macos xcode cocoa swift

6
推荐指数
2
解决办法
3472
查看次数

Android ImageView变形:从Square到Circle(解决方案更新)

我正在CircularReveal创建动画,使方形专辑艺术成为圆形.以下是一个简短的片段.

int cx = mImageView.getMeasuredWidth() / 2;
int cy = mImageView.getMeasuredHeight() / 2;

// get the initial radius for the clipping circle
int initialRadius = mImageView.getWidth() / 2;

// create the animation (the final radius is zero)
Animator anim = ViewAnimationUtils.createCircularReveal(mImageView, cx, cy, mImageView.getWidth(), initialRadius);
anim.setDuration(500);
anim.start();
Run Code Online (Sandbox Code Playgroud)

问题是,在动画之后,图像不会保持圆形.我正在寻找类似Animation.fillAfter(boolean fillAfter)电话的东西,但动画师没有这个选项.

以下是当前(故障)行为.

在此输入图像描述

有什么建议可以在动画后将图像修复为圆圈吗?

animation android

6
推荐指数
2
解决办法
3121
查看次数