从已关闭的应用程序发送有关新 JSON 数据的本地通知? |迅速

Posted

技术标签:

【中文标题】从已关闭的应用程序发送有关新 JSON 数据的本地通知? |迅速【英文标题】:Send local notifications about new JSON data from closed app? | Swift 【发布时间】:2019-07-15 13:37:32 【问题描述】:

我有一个使用 JSON 数据填充的 tableView。此时,用户需要下拉刷新 tableView 并加载新数据。

是否可以在应用退出或完全未在用户手机上打开应用时在后台刷新数据并向用户发送本地通知,告知有新数据?

如何做到这一点?我更关注本地通知。

我目前如何让我的应用读取 JSON 的示例:

private func fetchJSON() 

guard let url = URL(string: "https://example.com/example/example.php"),
    let value = name.addingPercentEncoding(withAllowedCharacters: .urlQueryValueAllowed)
    else  return 

var request = URLRequest(url: url)

URLSession.shared.dataTask(with: request)  data, _, error in
    guard let data = data else  return 

    do 
        self.structure = try JSONDecoder().decode([structure].self,from:data)
        DispatchQueue.main.async 
            self.tableView.reloadData()

        
              
    catch 
        print(error)
    
    .resume()


从地址 example.com/example/example.php 看 api 的外观示例如下:

["person":"Jackson","number":"1928192",
"position":"driver","person":"Jeff","number":"293829","position":"driver"]

【问题讨论】:

您如何以及从何处接收 JSON 数据?你怎么知道有更新? JSON 数据在 PHP 中创建并查看一个 mysql 数据库 是否可以让应用后台每隔几分钟刷新一次,看看信息有没有变化? 嗯,是的,但是你如何从服务器接收它?我想,您正在使用标准的客户端-服务器架构,这意味着,在 ios 部分,您正在发送请求以通过页面 viewDidLoad 或 viewWillAppear 方法从服务器获取数据。这意味着,服务器没有简单的方式告诉你,有更新。每 X 分钟刷新一次是一种非常粗暴的做法,你不应该使用它。 我发布了我的应用程序当前如何填充 tableView 的示例 【参考方案1】:

第 1 步:- 将 json 存储在 UserDefault 或 CoreData 中

如果您使用的是 UserDefault,我个人更喜欢 PropertyListEncoder&Decoder。

第 2 步:- 启用后台功能

第 3 步:- 在您的应用中实现本地通知代码。

【讨论】:

是否有可以展示的示例或推荐的 Git 项目? 后台获取:-gist.github.com/RameshRM/8ca0a1be512520a5240e 和 ***.com/q/36356310/9697632 看看。 如果你提供api那么我也可以实现这个功能。 我发布了一个 api 的示例

以上是关于从已关闭的应用程序发送有关新 JSON 数据的本地通知? |迅速的主要内容,如果未能解决你的问题,请参考以下文章

应用程序关闭时如何发送本地通知(swift)?

如果从已保存在数据库(领域)中更改,则观察 JSON 响应

如何从本地 JSON 文件将数据加载到 ViewController [关闭]

本地存储和cookie

从已关闭的视图控制器中显示警报

如何获取 PHP 脚本以从已运行的进程发送和接收数据?