iOS 8 及更高版本(使用 Swift)应用程序是不是可以创建基于用户位置的自定义闹钟

Posted

技术标签:

【中文标题】iOS 8 及更高版本(使用 Swift)应用程序是不是可以创建基于用户位置的自定义闹钟【英文标题】:Is it possible for iOS 8 and above (Using Swift) apps to create Custom Alarm Clock that is based on user's locationiOS 8 及更高版本(使用 Swift)应用程序是否可以创建基于用户位置的自定义闹钟 【发布时间】:2016-03-07 10:18:15 【问题描述】:

标题如下:

我正在尝试制作 ios 版本的“Wakey: SG Bus Alarm”,它是 Google Play 中众多此类 android 应用程序之一。 Wakey 是一个应用程序,它可以在公共汽车旅途中用闹钟唤醒人们。

我正在尝试这样做,包括地铁/地铁(在新加坡通常称为 MRT)

具体涉及的步骤有:

1) 用户应输入其当前位置(使用 GPS)和所需目的地。

我已经大致弄清楚了如何通过这个项目来实现这一点: LocationManager

2) 应用程序将规划并建议可能的公共交通路线。 (Apple Map 的公共交通 API 尚未到达新加坡,但有 Onemap.sg 等 3rd 方 API)

3) 用户确认此第 3 方 API 提供的建议路线之一。

4) 我的应用开始使用 GPS 跟踪用户位置。

5) 警报应在目的地前的1个地铁站或公交车站响起。

问题是,我已经阅读了一些以前关于闹钟的帖子,并且我注意到从 iOS7 开始,后台应用程序仅限于这几个类别。

Background Execution

鉴于我认为我提议的应用属于让用户随时了解其位置的应用,例如导航应用,所以我想知道从哪里开始以下方面分:

1) 用 Swift 编写的闹钟,因为我看到的只是 iOS5 或 6 的 Objective C。

2) 如果在上述上下文中需要使用后台线程的一些 sn-ps。

3) 如何在 UIViewController 显示时执行函数。目前,我将其中一些代码放在 viewDidLoad() 下,因此代码只在 UIViewController 的第一次加载期间运行一次。

我的应用恰好有 4 个标签。当第二个选项卡加载时,我希望它运行一些代码。但是当我将这些代码放在 viewDidLoad() 上时,它只加载一次。因此,如果我相应地执行以下步骤,代码将不会再次执行: - 加载应用程序 - 从默认更改为第二个选项卡 - 执行的代码 - 从第 2 个选项卡更改为任何其他选项卡(第 1、第 3 或第 4 个) - 再次更改为第二个选项卡 - viewDidLoad() 中的代码不执行

非常感谢有好心人告诉我这种应用在 iOS 上是否在技术上可行。

【问题讨论】:

对于标签视图,每个标签的viewDidLoad 通常只会被调用一次并保存在内存中以备将来使用。所以如果你想在每次激活时调用某个方法,最好试试viewWillAppear 【参考方案1】:

是的,这是可能的。 没有什么能阻碍您开发这样的应用程序。 首先找出从哪里获得公交车站的坐标。 作为第一步,您可以尝试 OpenStreetMap。 应用程序是其中的一部分,另一个主要问题是从哪里获取坐标。

【讨论】:

以上是关于iOS 8 及更高版本(使用 Swift)应用程序是不是可以创建基于用户位置的自定义闹钟的主要内容,如果未能解决你的问题,请参考以下文章

ios7及更高版本导致图像图标错误

在 ios 8 及更高版本上打开苹果地图不起作用

iOS 8 及更高版本中的更多选项卡图标颜色

为啥在启动图像中选择“iOS 8.0 及更高版本”并为此新图像后,iOS 应用程序的屏幕尺寸会发生变化?

如何在 Xcode 7 Beta 5 中安装 iOS 7 及更高版本的模拟器?

如果 registerForRemoteNotificationTypes: 在 iOS 8.0 及更高版本中不支持,则为 iOS 构建