iOS Companion App for PineTime

Overview

InfiniLink - an InfiniTime Companion App for iOS

This iOS application allows you to interact with your PineTime smartwatch running InfiniTime (and perhaps other watches/OSes, pending testing).

What works:

  • Scan nearby devices and connect to PineTimes
  • Set time and date immediately after connection
  • Read and chart battery level data and heart rate data from watch
  • Chart persistence, with filters for last hour, last day, and last week
  • Music controls on InfiniTime can control Apple Music.
  • Step counter with current step count, weekly chart, and monthly calendar
  • Check for updates to InfiniTime using the GitHub API, download them directly with the app, and send them to the PineTime.

What doesn't work:

  • InfiniTime's navigation app. As far as I can tell, there is no API in Swift to access current directions, so this will likely never work unless it's added into a mapping application.
  • Music controls for anything other than Apple Music -- This requires Apple Music Service (AMS) to be implemented in InfiniTime.
  • Phone notifications pushing to watch -- This requires a proprietary Apple service as well.

How to try it out:

Join the TestFlight beta now! Click this link from your iOS device: https://testflight.apple.com/join/Z7u1Jxp4

Contributions:

I'm not interested in profiting from this app, but the Apple Developer License was not cheap! If you've enjoyed the app and have some disposable income, consider donating. If not, no problem!

Donate

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)
  • 0.9.4(Jan 10, 2022)

    This is a smaller release, mostly to push out some bug fixes. People were experiencing crashes related to the music interface, and that should be fixed now. Also, the steps settings page has been trimmed down to fit smaller displays. Please let me know if you're still having trouble interacting with those pages! I don't have a smaller screen to test on so I need feedback to make improvements there.

    Please note that the secure BLE bonding implemented in v1.8.0 of InfiniTime is not currently compatible with the way that iOS initiates bonding. I am working with the wonderful devs at InfiniTime to sort this out, but in the meantime, your BLE connection to your watch will still be unencrypted.

    Thanks to @wowieman for help with the music app crashes, and thanks to @friendlytsy for creating our first localization! Their hard work has created a foundation for future localizations as well, so if you're willing and able to translate InfiniLink to your language, please let me know and I can get you set up for that!

    Source code(tar.gz)
    Source code(zip)
  • 0.9.3(Nov 12, 2021)

    v0.9.3 includes a long-awaited feature: step counts! Also in this version: an updated logo and improved Apple Music compatibility, both thanks to contributions from @WowieMan on GitHub. Much appreciated!

    Source code(tar.gz)
    Source code(zip)
  • 0.9.2(Oct 27, 2021)

    This update includes a revamped chart filtering screen. Click the gear button to set the date range you’d like!

    This version also marks the change of the app’s name to InfiniLink! That accounts for most of the delay in releasing this version. There was lots of red tape to wade through to satisfy the requirements that Apple suddenly imposed.

    Source code(tar.gz)
    Source code(zip)
  • 0.9.1(Oct 3, 2021)

    v0.9.1 contains some UI changes, an overhaul of the Bluetooth implementation, Debug Mode, and some bug fixes.

    UI Changes:

    • Moved giant disconnect/connect button from the Home screen to side menu. Between InfiniTime 1.6.0's Bluetooth fixes and autoconnect enabled, there are very few reasons to manually disconnect or connect anymore. Let me know if this is a problem or pain point and I can make adjustments.
    • Widened side menu to accommodate larger fonts for accessibility.
    • Added device renaming button to home page.
    • Removed 'status' area from side menu. This section has been redundant for a while, as the whole UI updates when a device is connected, and the whole app doesn't do anything if Bluetooth is turned off.
    • Changed giant 'Select Firmware' button on DFU screen to a button where the selected firmware file goes.
    • Added a small pop-up text bubble if autoconnect is enabled to show when the device is scanning and when it connects.

    Debug Mode:

    • I have been tinkering with a debug mode to see app logs for a while, but decided to leave it out a month or so ago. It ended up being instrumental in solving a tricky bug that occurred when setting the time on the PineTime (thanks again for helping me troubleshoot that @bhibb!). With that in mind, I decided to add it to the app for everyone. To access the logs, enable Debug Mode in the Settings view, and you'll see a link appear that will take you to the log pages.
    • The logs are not persistent, so if you experience a crash, please report it through TestFlight.
    • Bear in mind that the log entries you'll see under the 'App' log section are all for bugs I've found or error messages generated by Swift APIs, so it's not a complete list of every possible scenario.

    Behind the Scenes:

    • Bluetooth refactor! Bluetooth was the first thing I implemented in this app, and the first time I had worked with Swift. Needless to say it was a bit of a rat's nest. It's been tidied up and optimized now, and a lot of mistakes and/or oversights have been corrected.

    Bug Fixes:

    • Fixed notifications somehow still trying to send with a nil value. This should fix a crash that someone reported on TestFlight.
    • Established some functions to handle the logic of how buttons should appear and when they're disabled. This fixes a few edge cases where a button is disabled that shouldn't be disabled, for example.
    • Fixed GitHub API request function. This was calling way too often, to the point that some users might have hit the generous 60-request-per-hour limit. Now the app pulls InfiniTime releases when it starts up, and then disables checks for the next 24 hours. I did not make the timer persistent, so the only way to hit that limit now is to open and close the app 60 times in an hour.
    Source code(tar.gz)
    Source code(zip)
  • 0.9.0(Sep 29, 2021)

    Hey everyone! Lots of big changes in this version, hope you all enjoy. As always, please let me know what you think by leaving GitHub issues, email, Mastodon, Matrix, and of course through TestFlight. It takes a day or so to be validated by Apple before it's pushed out to you, but you should be seeing the update soon.

    What's new in v0.9.0:

    • Tons of UI changes: New 'Home' view features some stats about your watch and the connect/disconnect button. DFU page was cleaned up a little. Color scheme changes were made to improve clarity for light mode users.
    • Chart Persistence: Infini-iOS is now capable of saving chart data as it is generated, and chart data can now be filtered by time. I've set the watch to prune data older than a week for now, but am open to suggestions about this time period
    • Device Naming: Devices can now be named in Infini-iOS! While this name has no effect on the watch, setting a name for the device in Infini-iOS associates the UUID of the watch with the new name. Any time this watch would appear on screen (Home screen, Connect screen, etc), your chosen name will display instead of 'InfiniTime'. Hopefully this will be helpful for those of you that have more than one watch!
    • Arbitrary Notifications: Now you can send arbitrary notifications to your PineTime from the Settings Menu. Have a short list of stuff to get at the store? Send the list as a notification and it will be on your wrist as you shop!
    • Updated DFU process: DFU downloads are now available! Now, when you tap the 'Select Firmware File' button, you're given the option to select a local file or download a firmware file. Tapping the download button uses the GitHub API to bring up a list of firmware files available on GitHub. Selecting a file from that list will download it and prepare it for flashing. After flashing, the file is deleted. Also, when a watch is connected, Infini-iOS will compare the firmware version number on the watch to this list, and notify you of any updates on the Home screen.
    Source code(tar.gz)
    Source code(zip)
  • 0.8.5(Aug 30, 2021)

    Mostly bug fixes and UI updates based on TestFlight and GitHub feedback (thank you!!!)

    • Added a line-only graph for battery and heart rate, and put toggles in the Settings tab to let users select which graph style they prefer
    • Graph displayed on Status page at open is now whatever the last viewed graph was
    • Added some more information to the DFU page. Now the page gives you a big green box that tells you the update was successful, and also returns the page to its default state on completion.
    • Added a cutesy little onboarding screen and added a little bit of buffer to allow the Bluetooth permissions to resolve before starting the first scan ever. This should help with some of the first connection issues that were reported.
    • Fixed a crash that occurred when trying to send non-ASCII characters to the PineTime for notifications, song titles, and artist names. If you notice an artist name or track title that is not displaying, it's because InfiniTime does not support a character in the song's title.
    • Added some error handling to the function that writes the date and time to the watch. I'm not sure how it happened, but a user experienced a crash because this function failed somehow. Now it should show an alert that this function failed and ask you to disconnect/reconnect to the PineTime.
    Source code(tar.gz)
    Source code(zip)
  • 0.8.0(Aug 22, 2021)

Owner
null
A companion app for after-cancer treatment patients

Amber - your smart companion We have developed the iOS app Amber - a companion for after-cancer treatment patients. It connects patients with their do

Alex Studnička 1 Oct 24, 2021
Companion app and XCode extension for adding SwiftUI recipes to your code.

SwiftUI Recipes Companion Free Companion app and XCode extension for adding SwiftUI recipes to your code. Choose from a rich selection of SwiftUI reci

Gordan Glavaš 17 Nov 20, 2022
An Elden Ring companion app using SwiftUI + GraphQL

The Roundtable The bustling hub area that exists outside of the Lands Between. A place to mingle with other adventurerers, craftsmen, resupply and dis

Thomas Ricouard 45 Sep 25, 2022
Todo is an iOS App written in Swift. This app is used for an online video training course. This app demonstrates how to use UITableViewController.

Todo Todo is an iOS App written in Swift. This app is used for an online video training course. This app demonstrates how to use UITableViewController

Jake Lin 273 Dec 29, 2022
In this mini app covered the concepts like basics of SwiftUI and Navigations and Animations and List with CRUD functions and MVVM and App Launch and App icons adding and also applied persistence using UserDefaults Concept.

TodoList In this application used the concepts from the beginner level project of SwiftUI_Evolve_1 The following concepts covered in this mini app Swi

Sivaram Yadav 2 Dec 4, 2021
NetFun-ios-app - iOS app using BFF service to display processed data.

NetFun-ios-app iOS app using BFF service to display processed data. The iOS demo developed in SwiftUI and it uses BFF service to show expected UI comp

Minhaz Panara 0 Jan 3, 2022
Porting the example app from our Advanced iOS App Architecture book from UIKit to SwiftUI.

SwiftUI example app: Koober We're porting the example app from our Advanced iOS App Architecture book from UIKit to SwiftUI and we are sharing the cod

raywenderlich 55 Dec 19, 2022
SwiftUI App to view the App Activity Record from iOS 15

App Activity Viewer A viewer for the iOS 15 "Record App Activity" export. FAQ How do I create an App Activity Report? Go to the "Settings" app of your

Jannik Arndt 13 Nov 16, 2022
iOS app for Ribbit, Broker API Reference App

Ribbit Reference Implementation (iOS) The reference implementation for designing the iOS user interface of a broker-dealer trading application with th

Alpaca 23 Dec 14, 2022
The app provides additional actions for the Shortcuts app on macOS and iOS.

Actions Supercharge your shortcuts The app provides additional actions for the Shortcuts app on macOS and iOS. Submit action idea (Submit an issue bef

Sindre Sorhus 1.2k Dec 29, 2022
A todo list iOS app developed with swift5 and coredata to persist data, this app help people organise their tasks on categories.

A todo list iOS app developed with swift5 and coredata to persist data, this app help people organise their tasks on categories. The app is simple, intuitive, and easy to use and update tasks informations.

null 1 Oct 10, 2022
The app demonstrates how to use Firebase in a SwiftUI iOS app

Firebase SwiftUIDemo app This app demonstrates how to use Firebase in a SwiftUI iOS app. Firebase Setup Go to firebase.com Click new project. Copy app

Andrew Gholson 0 Nov 28, 2021
An iOS app that visually clones Spotify's app and consumes the official Spotify's Web API to show(and play) songs, podcasts, artists and more.

SpotifyClone An iOS app that visually clones Spotify's app and consumes the official Spotify's Web API to show(and play) songs, podcasts, artists and

Gabriel Denoni 11 Dec 27, 2021
IOS-Quiz-App- - A trivia quiz app built with Swift using MVC structure

Quiz App A trivia quiz app built with Swift using MVC structure. Default Quiz

null 0 Feb 25, 2022
Ios-weather-app - A simple weather app with swift

AHOY Assignment Weather app Main Screen Settings Architecture The Architecture u

null 0 Jan 29, 2022
Marvel-App - Marvel App For iOS Using Swift

App Previews Home Screen Detail View Features Async await UICollectionViewCompos

null 0 Feb 14, 2022
Small app trying to recreate the Github's repos section from the iOS app with RxSwift and .nibs

Github Profile Repos Small app trying to recreate the Github's repos section from the iOS app with RxSwift and .nibs. This project is currently in pro

Leonardo 1 Apr 5, 2022
An IOS app that shows big 6 different animals from different National Parks from Africa, App available for mactosh

An IOS app that shows big 6 different animals from different National Parks from Africa, App available for mactosh. Africa was developed using SwiftUI

wykee2 2 Apr 2, 2022
This To-Do app was developed using Swift and SwiftUI and works on iOS, MacOS (Apple Silicon) and WatchOS. The tasks are kept on storage even when the app is restarted.

ToDo-SwiftUI This app has a lot of sentimental value for me, given that it helped me a lot to understand the process of doing an iOS app and became th

Augusto Galindo Ali 6 Jul 12, 2022