Infini-iOS - an InfiniTime Companion App for iOS

Overview

Infini-iOS - an InfiniTime Companion App for iOS

This is a proof-of-concept, barely-functional iOS application to interact with your PineTime running (at least) InfiniTime 1.3.0 (and maybe more, I haven't tested it against other watches or OSes).

What works:

  • Scan nearby devices and allow the user to select an InfiniTime device to connect to
  • Connect to a PineTime running InfiniTime 1.3.0
  • Set time and date immediately after connection
  • Read heart rate, and subscribe to HRM's notifier for updated values
  • Read battery level, and subscribe to battery level's notifier for updated values
  • Display heart rate, battery level, and connection/bluetooth/scanning status to app main page
  • Music controls on InfiniTime can control Apple Music. I can't access system-level music controls or system volume from within an app, so the controls literally only work on Apple Music.

What sort of works but mostly just sucks:

  • The UI: It's just a proof of concept so far, so I put as little effort as possible into the UI.
  • Notifications: I can send a test notification to the PineTime, but can't send phone notifications to the watch yet. Apple requires the ANCS protocol and bonding to be implemented on the peripheral device, so there's some big hills to climb before notifications are functional.

What's next:

  • Learn anything whatsoever about making an app design in SwiftUI that isn't an awful mess
  • Send notifications to the phone, probably. Might be nice to get a buzz on your phone if the watch disconnects for some reason or if the watch battery is running low
  • User-configurable settings, like enabling or disabling Apple Music controls, notifications, etc
  • Clean everything up. Being my first major foray into larger-scale coding projects, I have not done a great job of compartmentalizing my code, so the BLEManager.swift file is pretty monolithic.
  • Watch navigation app. This is a lower priority to me personally, but I'll definitely give it a shot eventually. Based on how the music control and notifications have gone, I'm guessing there's another proprietary Apple service that will need to be implemented to make this work.

How to try it out:

  • Snag this repo and open it in XCode on a Mac
  • Plug an iPhone into your computer and select it as the build target in XCode
  • Make sure you're signed into your appleID in XCode and that you've done whatever it wants you to do to flag yourself as a code signer
  • Change the code signing information in the Infini-iOS properties:
    • Click the main project in the files sidebar
    • Navigate to the 'Signing and Capabilities' tab
    • Change the 'Team' pulldown to reflect your appleID that you used to sign into XCode
    • Change the Bundle Identifier to match your team
  • Build and run!

Disclaimer

This is the first time I've worked with Swift, SwiftUI, XCode, BLE, or anything else in this application. I take no responsibility for what happens if you interact with this repository in any way. If it breaks your phone, your watch, or your brain, that's on you buddy!

Comments
  • Error when setting time

    Error when setting time

    when I try to sync the time with my pinetime using your app, I get an error message telling me it was not able to do so. Having some logs to peruse could help me debug why!

    Originally posted by @bhibb in https://github.com/xan-m/Infini-iOS/issues/18#issuecomment-927334741

    opened by xan-m 23
  • Can you publish it?

    Can you publish it?

    I 100% understand no longer having time to work on an open source project: I and I'm sure many others deeply appreciate the hard work you've invested so far. Obviously my hope is someone will take over the project in due time, but I was wondering if it would be possible for you to finalize publishing the app, so that we do not lose it in 90 days due to TestFlight. In my case, InfiniLink is the only way I can easily update/interact with my PineTime.

    opened by ocdtrekkie 13
  • Rename project

    Rename project

    After nearly 20 successful releases to TestFlight, Apple just rejected version v0.9.2 because the name contains "iOS". I probably should have guessed they would make a stink about iOS being in the name, but here we are. Name ideas would be very much appreciated!

    I may also take this opportunity to switch version control platforms to something FOSS. I initially put this project on GitHub so it would be easier to refer to the InfiniTime repo if issues came up. However, I've only linked InfiniTime issues twice, and that functionality does not seem to be worth the trade off of using a proprietary version control platform when FOSS ones can do all of the same work.

    Feel free to comment here if you'd prefer for me to stay on GitHub for some reason and I will take that into consideration!

    help wanted good first issue question 
    opened by xan-m 10
  • On boarding connection issue

    On boarding connection issue

    I’ve received a couple reports that the first connection was difficult for some (one user had to restart their phone, another had to try to connect to the device from another computer first)

    I suspect this might be an issue with how the Bluetooth permissions are handled on first boot of the app.

    If you had this issue, please add any information you can to this issue to help me troubleshoot!

    opened by xan-m 10
  • Current firmware update (1.11) hangs

    Current firmware update (1.11) hangs

    Looks like there might be an open PR to update the upstream repo branch - regardless at least a few users are unable to make the latest firmware update as the update just hangs and eventually reports the 'is it a zip' message

    opened by aafishman 8
  • TestFlight availability

    TestFlight availability

    Hi, I don't have a Mac to compile it (but I imagine I could rely on a cloud service for that) and send it on the phone (part which I imagine can't be skipped). I understand that it is experimental software but have you considered sharing it via TestFlight to get feedback? Cheers and thanks for sharing you work.

    opened by Utopiah 7
  • Xcode version incompatibility

    Xcode version incompatibility

    This is not strictly a bug - more of a note. For those of us who are running something older than Big Sur (I'm running Catalina 10.15.7), the latest version of XCode I can run is 12.4 - and that will not accept an iPhone with iOS 14.6 as a target because it is too new. Unfortunately my Mac cannot run Big Sur, which is required for any later version of XCode.

    opened by stefanoaz 7
  • InfiniTime latest release not detected

    InfiniTime latest release not detected

    InfiniLink is not detecting the latest available release of InfiniTime (1.7.0) for me. It sees version 1.6 and updates smoothly but doesn't see the 1.7 release.

    Experiencing this behavior on InfiniLink 0.9.3.

    opened by onigiri070 5
  • New Icon

    New Icon

    Not sure if you’re looking for a new icon, but if you are, I've created one you can use.

    image

    If you need it in a different format, like .SVG, I can send that.

    opened by WowieMan 4
  • Feedback for 0.8.5

    Feedback for 0.8.5

    I recently reported via TestFlight about disconnection issues if I completely close out the Inifini-iOS app, but thats not what this report is about, its to just provide some feedback for the "What to Test".

    • flashing firmware from 1.3.0 to 1.4.0 worked fine, I like the updated UI changes a lot, it does really help
    • the onboarding screen is very helpful, I also like this a lot, please consider keeping it as it is
    • I think the clicking the "Use Current Device for Autoconnect" and "Clear Autoconnect Device" should provide some sort of response other than the current visual one, its hard to know something or what actually happened after clicking it
    • Maybe changing "Use Current Device to Autoconnect" to "Autoconnect Current Device" with a toggle may help know its set, then "Clear Autoconnect Device" when pressed would untoggle it?

    Keep up the awesome work, using and testing this has been great, waited so long for a iOS companion app! I owe you a donation for making the PineTime work for my wife and I finally.

    opened by SwampRabbit 4
  • Ability to send custom notifications

    Ability to send custom notifications

    That would be really great ton be able to send custom notifications to the watch, for test purpose but also for productivity as well : for instance, sending a todo list on the watch to get it stored the whole day would be awesome and quite trivial to implement as far as I understand (an automatic notifications in sent to the device on first connections, and there’s no need to use Apple proprietary tools).

    This was done with GadgetBridge while linked to an android device : 726046BE-5C77-4437-9D3C-FC5A47AE022B

    Thanks in advance

    enhancement 
    opened by marcozer 4
  • App defaults to Russian?

    App defaults to Russian?

    Hey guys, I just installed the App, but it immediately defaulted to Russian. My Russian is pretty bad, and I couldn't find a setting for how to change the language. Uninstalling and reinstalling the App didn't help me so far. Any Ideas?

    opened by AeneasChristodoulou 1
  • support external resources

    support external resources

    as of infinitime 1.11.0, some features require you to upload external resources to the watch. most other companion apps have this, and infinilink would benefit from it too.

    opened by TheAwesome98-Real 0
  • Configurable URL to export sensor data live

    Configurable URL to export sensor data live

    Thanks for the great project and kudos for publishing to the App Store.

    I would like to use data from the watch, e.g IMU or heart rate, for VR and AR applications, in particular to motivate physical activity during a work day for its health benefit. Currently the application gather the data and displays it.

    Could it be possible to provide a URL and then push the data there in a know format, e.g JSON, so that it can be parsed and used? I imagine pushing data from favorites at a specific frequency, e.g 10 times a second that could also be configurable.

    opened by Utopiah 0
  • What is the current state of getting iOS notifications, and third-party music apps to work?

    What is the current state of getting iOS notifications, and third-party music apps to work?

    I'd love to be able to control music on my phone from my pinetime, as well as receive my phones notifications on it, so I'm just curious what the state of getting this working is.

    opened by K4LCIFER 3
  • Secure bonding issue

    Secure bonding issue

    opened by xan-m 0
Releases(0.9.4)
Owner
null
Basic iOS app template for Integrate Branch Day.

Integrate-Branch-Day-Template Basic iOS app template for Integrate Branch Day. How to prepare for Integrate Branch Day: Install Xcode via Self Service

null 0 Oct 19, 2021
The goal is a simple iOS app that draws an analog clock of the current time

Qrono This is a work-in-progress. The goal is a simple iOS app that draws an analog clock of the current time (as well as displaying a digital readout

Justin Reusch 2 Jan 29, 2022
Simple clock app for the different time zones.

DunyaSaatleri The clock app provide the user adding clocks of cities from different timezones. The times showed by analog clock. The added clocks can

Ozan Barış GÜNAYDIN 1 Nov 27, 2021
Egg timer app written in Swift

Egg Timer Our Goal This module will be a mix of tutorials and challenges. Most importantly, we want you to get comfortable with looking up how to do s

null 0 Dec 2, 2021
Convergent Demo Day: StepCity mobile app

Convergent Demo Day 2020 Problem: Our daily lives have been upended by the pandemic and it has been harder to motivate ourselves to workout. Dr Dunton

Kelly Chiu 0 Dec 28, 2021
A basic countdown app that allows the user to create, edit, and delete events. Each event contains a live countdown timer to a specified date and time.

Event Countdown App (iOS) Created by Lucas Ausberger About This Project Created: January 4, 2021 Last Updated: January 8, 2021 Current Verison: 1.1.1

Lucas Ausberger 1 Jan 8, 2022
This app will hlep you realize if the job you are doing, truly is worth your time

Worth Your Time Is working for your current pay really worth your time? This app will hlep you realize if the job you are doing, truly is worth your t

Phillip Lundin 2 Mar 1, 2022
SwiftMoment - A time and calendar manipulation library for iOS 9+, macOS 10.11+, tvOS 9+, watchOS 2+ written in Swift 4.

SwiftMoment This framework is inspired by Moment.js. Its objectives are the following: Simplify the manipulation and readability of date and interval

Adrian Kosmaczewski 1.6k Dec 31, 2022
Dates and times made easy in iOS

DateTools DateTools was written to streamline date and time handling in iOS. Classes and concepts from other languages served as an inspiration for Da

Matthew York 7.2k Dec 30, 2022
This Control is a beautiful time-of-day picker heavily inspired by the iOS 10 "Bedtime" timer.

#10Clock Dark and Mysterious ?? Light Colors ?? Usage The control itsself is TenClock. Add that to your view hierarchy, and constrain it to be square

Joe 557 Dec 23, 2022
A "time ago", "time since", "relative date", or "fuzzy date" category for NSDate and iOS, Objective-C, Cocoa Touch, iPhone, iPad

Migration 2014.04.12 NSDate+TimeAgo has merged with DateTools. DateTools is the parent project and Matthew York is the project head. This project is n

Kevin Lawler 1.8k Dec 2, 2022
Better time picker for iOS.

TimePicker Better TimePicker for iOS Requirements Swift 5.0 iOS 10.0+ Xcode 10.2+ Installation The easiest way is through CocoaPods. Simply add the de

Oleh 14 Oct 21, 2022
Timekeeper is an easy-to-use time measurement library written in Swift, with support for iOS, tvOS, watchOS and macOS.

Timekeeper is an easy-to-use time measurement library written in Swift, with support for iOS, tvOS, watchOS and macOS. Installation Timekee

Andreas Pfurtscheller 1 Oct 18, 2021
UmaBasicAlertKit is a Swift UI library for iOS

UmaBasicAlertKit UmaBasicAlertKit is a Swift UI library for iOS. This library al

UmaKim 3 Jan 28, 2022
NasaApod - iOS, Swift, MVVM, Consuming NASA Astronomy Picture of the Day API for any selected date

NasaApod iOS, Swift, MVVM, Unit Tests Consuming NASA Astronomy Picture of the Da

Vishal Singh 1 Jan 10, 2022
Population Clock is an iOS tool for learning about geography and demographics.

PopulationClock Population Clock is an iOS tool for learning about geography and demographics. Download app on iTunes The project uses the most recent

Netfilter 12 Feb 8, 2022
A clock for iOS based off of the famous fibonacci sequence

Fibonacc iClock Fibonacc iClock is a fibonacci clock implementation for iOS. This project is based off of Thiago Sá's implementation of Philippe Chrét

null 10 Dec 16, 2022
Date and time manager for iOS/OSX written in Swift

Tempo was designed to work both in OSX and in iOS (7.0+). Work with the time or dates can be cumbersome, iOS development. Tempo allows you to deal easly with date and time. Basics manipulations are already implemented in Tempo.

Remi ROBERT 153 Jun 3, 2021
iOS Companion App for PineTime

InfiniLink - an InfiniTime Companion App for iOS This iOS application allows you to interact with your PineTime smartwatch running InfiniTime (and per

null 142 Dec 28, 2022
Animal Crossing New Horizon companion app in SwiftUI

You can now download the app on the App Store! The best Animal Crossing New Horizons companion app! 最高の「あつまれ どうぶつの森」コンパニオンアプリ Animal Crossing New Hori

Thomas Ricouard 1.6k Dec 29, 2022