小编mat*_*ode的帖子

如何设置每次重复显示不同内容的每日通知?

我正在开发一款可以在中午向您发送通知的应用程序。这个通知应该每天都不同。

我得到了通知本身的工作:

let notificationOptions: UNAuthorizationOptions = [.alert, .sound];
UNUserNotificationCenter.current().requestAuthorization(options: notificationOptions) { (granted, error) in
    if !granted {
        print("Something went wrong")
    } else {
        let content = UNMutableNotificationContent()
        content.body = getRandomDailyString()
        content.sound = UNNotificationSound.default()

        let date = DateComponents(hour: 12, minute: 15)
        let trigger = UNCalendarNotificationTrigger(dateMatching: date, repeats: true)

        let request = UNNotificationRequest(identifier: "Daily String", content: content, trigger: trigger)
        UNUserNotificationCenter.current().add(request) { (error) in
            if let error = error {
                print(error.localizedDescription)
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

现在发生的情况是调用getRandomDailyString()函数,它返回一个字符串,并设置一个重复通知,该通知确实出现在指定时间,但始终具有相同的内容。

我该如何制作每天提供独特内容的通知?

ios uilocalnotification swift

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

Flutter MediaQuery.of(context).size.width 检查设备大小总是在 iOS 模拟器中返回相同的错误值

我正在开发一个 Flutter 应用程序,需要在小屏幕(iPhone 5S、SE、6S、Galaxy 5S 等)上调整元素大小。

为了做到这一点,我调用double width = MediaQuery.of(context).size.width,如果该值低于750像素(iPhone 6S 大小),则元素会变小。

这在设备上效果很好,但在 iOS 模拟器中,无论它在哪个模拟设备上运行,该值总是很小(~375)。这基本上使得查看应用程序是否在模拟器上运行之后无法使用,因为它总是显示“小”版本。

有没有更好的方法来获取适用于 iOS 模拟器的设备大小?或者可能有其他方法来适应屏幕尺寸?

android ios flutter

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

如何判断 DateTime.Now() 是否在不同日期时间之后的一天

我在 flutter 上运行这个,但我想这可能是一个更普遍的问题。

我正在首选项中保存日期时间。我希望能够判断是否DateTime.now()在上次保存的日期时间后至少一天,即

(pseudocode)
lastDailyCheck = 2020.04.10
now = 2020.04.11
Run Code Online (Sandbox Code Playgroud)

=> 现在是上次每日检查后的一天。

如果新的一天是 00:01,即使最后一次每日检查是在前一天的 23:58,这也应该已经起作用,这意味着 2 个日期时间之间的差异可以低至分钟。

事实证明这真的很复杂!

这是不起作用的:

DateTime.Now().isAfter(lastDailyCheck)

这只检查现在是否在最后一个之后,它也会在一秒钟后和同一天返回 true。

DateTime.Now().isAfter(lastDailyCheck) && lastDailyCheck.day != DateTime.Now().day

我认为这很聪明。如果这一天不同并且是在最后一天之后,那么它确实可以识别出这是一天之后的事情 - 但后来我意识到当这两天都在该月的 15 日时,它会出错 - 那么lastDailyCheck.day就会相等DateTime.Now().day

您认为这里可能会发生什么?

datetime date dart flutter

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

Swiftui TabBar:点击当前选定 Tab 的 TabItem 以重置视图的操作

我正在开发的应用程序基于 TabBar,当我在选项卡上时,我希望能够再次单击 tabItem 以重置视图,类似于 twitter 在他们的 tabBar 中执行此操作的方式。

我不知道如何识别那个动作。向 TabItem 添加按钮不起作用,添加 tapGesture 修饰符也不起作用,我想不出还有什么可以尝试的。

struct ContentView: View {
  var body: some View {
    TabView() {
      Text("Tab 1")
        .tabItem {
          Image(systemName: "star")
            .onTapGesture {
              print("Hello!")
            }
          Text("One")
        }
        .tag(0)
      
      Text("Tab 2")
        .tabItem {
          Button(action: {
            print("Hello!")
          }, label: {
            Image(systemName: "star.fill")
          })
        }
        .tag(1)
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

再次打开选项卡时,它不应该自动重置,我在别处看到过这一点,但是再次点击 tabItem 时。

我在这里可能还缺少哪些其他东西?

swift swiftui

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

标签 统计

flutter ×2

ios ×2

swift ×2

android ×1

dart ×1

date ×1

datetime ×1

swiftui ×1

uilocalnotification ×1