小编Kon*_*nov的帖子

iOS WidgetKit:远程图像无法加载

我观察到一件奇怪的事情:在新的小部件中,即使图像已成功加载并放入缓存中,远程图像也经常无法显示

对于图像下载,我尝试过:

  • SDWebImageSwiftUI
  • 翠鸟
  • 网址

所有这些都表明图像加载成功,但实际的小部件没有显示它。

struct TestWidgetEntryView : View {
    var entry: Provider.Entry

    var body: some View {
        WebImage(url: URL(string: "https://miro.medium.com/max/3840/0*TLqp5Uwavd-U_xrs.jpg"))
                        .onSuccess()
                        .resizable()
    }
}
Run Code Online (Sandbox Code Playgroud)

在调试器的第二次运行 - 从缓存加载图像 - 我显示图像,但在初始运行时从未(?)。

感觉就像在 onSuccess 我需要触发 UI 失效?但是如何?

(因为它确实发生在我尝试的每个图像库中 - 我不认为它是库中的东西)

环境:

  • iOS 14 Beta 3(设备和模拟器)
  • Xcode 12 测试版 3
  • 在调试运行期间,内存使用量约为 15mb

widgetkit swiftui ios14

22
推荐指数
2
解决办法
4887
查看次数

来自本地通知的附件中的图像未显示在UNNotificationContentExtension中

我一直在研究iOS10中引入的丰富通知体验,并坚持将图像作为附件传递给UNNotificationContentExtension.

这是我的ContentExtension:

class NotificationViewController: UIViewController, UNNotificationContentExtension {

    @IBOutlet weak var attachmentImage: UIImageView!

    func didReceive(_ notification: UNNotification) {

        if let attachment = notification.request.content.attachments.first {
            if attachment.url.startAccessingSecurityScopedResource() {
                attachmentImage.image = UIImage(contentsOfFile: attachment.url.path)
                attachment.url.stopAccessingSecurityScopedResource()
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

作为教程,我一直在关注WWDC的高级通知视频.我已经检查过 - UIImage我正在分配给UIImageView:

  • 不是 nil
  • 有适当的CGSize(191x191)
  • attachment.url.path等于 /var/mobile/Library/SpringBoard/PushStore/Attachments/<bundle of app>/<...>.png

以下是我从应用发送本地通知的方式:

    let content = UNMutableNotificationContent()
    content.title = "Sample title"
    content.body = "Sample body"
    content.categoryIdentifier = "myNotificationCategory"

    let attachement = try! UNNotificationAttachment(identifier: "image",
                                                                url: Bundle.main.url(forResource: "cat", withExtension: …
Run Code Online (Sandbox Code Playgroud)

ios swift ios10 unnotificationattachment

13
推荐指数
1
解决办法
6976
查看次数

如何处理RecyclerView.ItemDecoration中的点击事件?

我有一个RecyclerView(带有LinearLayoutManager)和一个自定义的RecyclerView.ItemDecoration.

让我们说,我想在装饰视图中有按钮(出于某种原因......).

我用按钮给布局充气,它画得很好.但我不能使按钮可点击.如果我按下它,没有任何事情发生(它保持不变,没有按下效果)并且onClick事件没有触发.

ItemDecoration布局的结构是

<LinearLayout>
  <TextView/>
  <Button/>
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)

而我正试图在ViewHolder中设置侦听器的装饰

class ItemDecorationHolder extends RecyclerView.ViewHolder {
    public TextView header;
    public Button button;

    public HeaderHolder(View itemView) {
        super(itemView);

        header = (TextView)itemView.findViewById(R.id.header);
        button = (Button)itemView.findViewById(R.id.button);
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                //.. Show toast, etc.
            }
        });
    }
}
Run Code Online (Sandbox Code Playgroud)

我正在onDrawOver方法中绘制装饰.(实际上,我正在修改此代码库:https://github.com/edubarr/header-decor)

有任何想法吗?它可行吗?

谢谢!

android android-viewholder android-recyclerview

12
推荐指数
1
解决办法
5068
查看次数

如何检测内部PreferenceScreen何时关闭

Users在另一个PreferenceScreen(调用它Main)内部有一个内部PreferenceScreen (调用它).
当我点击Users一个新屏幕打开,我可以在那里更改我的首选项(很多CheckBoxes).
当我关闭此屏幕并回到MainPreferenceScreen 时,我想检测(触发回调).
我找到的唯一方法是创建一个继承PreferenceScreen和重载的新类onPrepareForRemoval

我想知道是否有更简单的方法可以做到这一点.

android preferences preferenceactivity preferencefragment

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

在android测试上重启应用程序

我正在创建一个库,它将根据用户默认设置处理信息,并将其保存在SharedPreferences上,开发人员可以在初始化我的库之前对其进行修改.

SDK应该只为每个应用程序实例初始化一次,否则会触发RuntimeError.所以在Application类的应用程序端应该是这样的:

public class SampleApplication extends Application {
    @Override
    public void onCreate() {
       super.onCreate();

       //Here I can do something that will change the default configs

       //Here I initialize the SDK singleton method
       Sdk.initialize();
    }
}
Run Code Online (Sandbox Code Playgroud)

sdk抽象实现:

public class Sdk {

    private static SampleApplication sInstance;

    private void Sdk(){
    }

    public static SampleApplication getInstance() throws RuntimeException {
        if (sInstance == null) {
            throw new RuntimeException();
        }
        return sInstance;
    }

    public static void initialize() {
        if (sInstance == null) {
            sInstance = new …
Run Code Online (Sandbox Code Playgroud)

android unit-testing android-testing

7
推荐指数
1
解决办法
1046
查看次数

UNNotificationServiceExtension偶尔无法更新通知

我有一个UNNotificationServiceExtension用Swift写的.它所做的一切:

  • 设置通知标题
  • 设置通知正文
  • 加载图片和通话 contentHandler ()

这是我正在做的简短版本:

override func didReceive(_ request: UNNotificationRequest, withContentHandler contentHandler: @escaping (UNNotificationContent) -> Void) {
    self.contentHandler = contentHandler
    self.bestAttemptContent = request.content.mutableCopy() as? UNMutableNotificationContent

    bestAttemptContent!.title = GetNotificationTitle(userInfo)
    bestAttemptContent!.body = GetNotificationBody(userInfo)

    if let imageUrl = <get image url> {
        let imageLoaderTask = URLSession.shared.dataTask(with: URL.init(string: imageUrl)!) { (newsImageData, newsImageUrl, newsImageError) -> Void in
            if newsImageError == nil && newsImageData != nil {
                let documentDirectory = self.GetDocumentDirectory()
                if documentDirectory != nil {
                    let newsFileURL = documentDirectory?.appendingPathComponent("news_image").appendingPathExtension("png")
                    do { …
Run Code Online (Sandbox Code Playgroud)

iphone ios swift ios10 serviceextension

7
推荐指数
1
解决办法
637
查看次数

Mortar和Flow库与ViewPager

我正在尝试在我的应用中调整Mortar&Flow并遇到一个问题,我无法使PageAdapter与屏幕一起使用,而不是片段.

有人设法做到了吗?

我没有成功但是,可能有人可以从这一点指导我:

最初的Dagger注册:

@Module(
    injects = {
            MainActivity.class,
    },
    library = true,
    complete = false
)
public class DaggerConfig {
    @SuppressWarnings("unused")
    @Provides @Singleton Gson provideGson() {
        return new GsonBuilder().create();
    }
}
Run Code Online (Sandbox Code Playgroud)

MainScreen,其View托管ViewPager:

@Layout(R.layout.screen_main) @WithModule(MainScreen.Module.class)
public class MainScreen extends Path {
    @dagger.Module(injects = MainView.class, addsTo = DaggerConfig.class)
    public static class Module {}

    @Singleton
    public static class Presenter extends ViewPresenter<MainView> {
        @Inject
        public Presenter() {}
    }
}
Run Code Online (Sandbox Code Playgroud)

的MainView:

...........
@Inject
MainScreen.Presenter presenter;
...........
@Override protected void onFinishInflate() {
    super.onFinishInflate();
    ButterKnife.inject(this);

    final …
Run Code Online (Sandbox Code Playgroud)

android flow android-viewpager mortar square-flow

6
推荐指数
1
解决办法
717
查看次数

[MonoTouch] [Bass.dll]应用程序崩溃"尝试使用-aot-only运行JIT编译方法..

我遇到了一个问题,我3天都无法解决,你是我最后的希望.

我的目标是使用Bass.dll录制声音(iPhone的特殊版本的库和.net包装的版本;可以在这里找到:un4seen.com)

模拟器程序工作(或似乎工作正常).但是当我试图在iPhone上运行它时 - 我收到了这个错误:

"尝试使用JIT编译方法'(包装器本机到托管)RecordingAudioHelloWorld.Player:recordingHandler(int,intptr,int,intptr)'在运行时使用--aot-only."

错误发生在这里:

RECORDPROC _recordingHandler = new RECORDPROC(recordingHandler);

_record = Bass.BASS_RecordStart(16000, 1, BASSFlag.BASS_SPEAKER_RIGHT, _recordingHandler, IntPtr.Zero); // <-- ERROR!!!

private int recordingHandler (int handle, IntPtr buffer, int length, IntPtr user)
{
//....
}
Run Code Online (Sandbox Code Playgroud)

正如我在这里读到的,在SO上,我将链接器行为更改为"仅限链接SDK程序集",但它没有任何效果.

有什么我可以做的吗?

jit xamarin.ios aot bass ios

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

媒体附件裁剪图像在ios 10通知中

iOS10通知允许我们将图像作为媒体附件添加到它们.不幸的是,我没有找到任何控制附件在通知中的外观的好方法.

例如,我正在添加此图像作为附件: 在此输入图像描述

它显示为:

在此输入图像描述

我正在传递正方形图像,并希望避免图像裁剪(因为你可以看到一只猫的耳被切断).

我通过这个片段发送通知(作为本地通知):

    let content = UNMutableNotificationContent()
    content.title = "Test notification"
    content.body = "Test notification"
    content.categoryIdentifier = "myNotificationCategory"

    let attachement = try! UNNotificationAttachment(identifier: "image",
                                                                url: Bundle.main.url(forResource: "cat", withExtension: "png")!,
                                                                options: nil)

    content.attachments = [ attachement ]
    let request = UNNotificationRequest(identifier:requestIdentifier, content: content, trigger: nil)
    UNUserNotificationCenter.current().delegate = self
    UNUserNotificationCenter.current().add(request){(error) in
        if (error != nil){
        }
    }
Run Code Online (Sandbox Code Playgroud)

所以问题是:

  • 我可以避免图像裁剪吗?(如果不是 - 如何删除图像?)
  • 奖金问题:有没有办法在一个通知中显示2个媒体附件(当它崩溃时)

谢谢!

apple-push-notifications ios swift ios10

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

WidgetKit getCurrentConfigurations 返回错误的小部件配置列表

我添加了具有配置意图的小部件扩展。出于记录目的,我尝试记录应用程序用户拥有的小部件数量

 WidgetCenter.shared.getCurrentConfigurations { results in
     guard let widgets = try? results.get() else { return }
     ..<log widgets.count>...
 }
Run Code Online (Sandbox Code Playgroud)

令我惊讶的是,我得到了所有小部件中曾经使用过的所有配置意图的完整列表,而不是实际的 [WidgetInfo]。

即我屏幕上有 2 个小部件,而WidgetCenter声称我有 9 个当前配置。关于如何计算小部件有更好的想法吗?

在此输入图像描述

iOS 14 Beta 8(iPhone 和模拟器)和 Xcode 12 Beta 6

swift widgetkit ios14 widgetcenter

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