Hello everyone! I think most of you guys have seen what I am working on by now. Either way, if you haven´t - Since last fall I have been working a cryptocurrency tracker. I noticed that most apps on the store either required sign in, in app purchases or had a bunch of ads, I want to change that. Cryptocurrency is for everyone, not just for those who pays. The app is still a WIP but I just released a big update for iOS so I thought it would be a good idea to show it now and hopefully get some feedback from you guys. The Android vesion is a little behind since I´m building for both platform. Please check it out if you have some extra time: Hope you like it :)
iOS: https://apps.apple.com/se/app/coincurrently/id1543974454#?platform=iphone
Android: https://play.google.com/store/apps/details?id=com.cryptium.coincurrently&hl=sv&gl=US
Hello everyone. It´s been a while since I posted here because I´ve been working on the Android version of this app. Now that I´m back I´ve been trying to improve the user experience by adding these skeleton loaders. It´s a WIP but I definately think it became a lot better. What do you guys think?
I will release this update next week but if you want to check out the app already, please do and leave some feedback :)
iOS: https://apps.apple.com/se/app/coincurrently/id1543974454#?platform=iphone
Android: https://play.google.com/store/apps/details?id=com.cryptium.coincurrently
This is how it’s supposed to be done now, without GIDSignDelegate. But it doesn’t show how to do it for SwiftUI, and I’m pretty new to iOS dev, so I have no idea how to implement it.
I believe you could do this using Firebase Storage and Firebase Database.
Just an idea on how to implement it is to keep track of the file name and other info you want to save about the file in the database when you upload said file to Firebase Storage. Then you just retrieve the list of the database of file data that you saved and the user can click on a download button next to file name and you can retrieve that file name from Firebase Storage.
I have done this exactly except I used image files and it works great.
I'm regards to cost, you only write when you upload (I am assuming you are not writing much given your post) so it will not cost anything (see firebase costs). And then reading will depend on how often you are retrieving the file names (also won't cost you anything given your situation). Pricing
So Figma recently released Figma community where you can contribute plugins and contribute designs to the community.
Here's the documentation of how to build Figma plugins:
https://www.figma.com/plugin-docs/intro/
Apple utilizes AWS a lot, along with their own data centers. I would have a hard time believing Apple would start making server hardware again, even with Apple Silicon. Albeit I would love to see new Xserves.
There’s a big effort in getting Swift in more places. With projects like Swift aws lambda runtime and Swift cluster membership we’re seeing Swift used in more domains than just building apps for Apple’s platforms, and thats exciting.
There’s also a lot of movement with Swift in the AI/ML space since Swift is much faster than the domain dominate Python.
My hope is that Swift starts to be looked at as a more general programming language, as it was meant to be, then just an Apple platform language. This would be a great post for /r/swift which is a more language specific sub.
https://firebase.google.com/docs/firestore/manage-data/add-data#increment_a_numeric_value
This is imo the most elegant solution. Here's a snippet where I'm using this:
func subtractFromBalanceOf(_ customer: Customer, by adjustment: Int) { Firestore.firestore().collection("customers").document(customer.id!).updateData([ "balance" : FieldValue.increment(Int64(-adjustment)) ]) }
Aw no wonder. Glad you found some solutions!
https://repl.it/repls/YearlyWillingQuadrants Outdated now but this was originally what I meant to share.
Hoping it helps the next person.
Here's a repl.it of what I meant for a data loader/seeder. It's a class to generate core data entities on app load.
In a particular preview, I'd do
**struct** DetailedClientView\_Previews: PreviewProvider {
**static** **var** previews: **some** View {
**let** context = (UIApplication.shared.delegate **as**! AppDelegate).persistentContainer.viewContext
**let** client = SeedData().client()
**return** DetailedClientView(client: client).environment(\\.managedObjectContext, context)
}
}
You can use whatever database you want. There's no "best" database for SwiftUI, or any project tbh.
The most "compatible" database with SwiftUI is CoreData since there are property wrappers like `@FetchRequest` which is very useful.
If you want to use MongoDB, I'd recommend Realm since it's a mobile friendly database.
But all in all, if you already use firestore and have a working setup, there's no need to mess around. Just do what you always do!
Yeah use what makes sense for your team. But for swift naming in general, it’s good to follow the Swift API design guides - it’ll make it feel more ‘swifty’.
I went to Google domains and bought a cheap site. In my case it was a .app site. Google domains offer a few one pagers for free you can you use.
If you don’t want to buy a domain you can create a one pager with carrd.co for free.
The rationale behind is that you dont update collections, but documents. So when updating a doc with a sub collection, you will update the docs of that sub collection. This is the documentation with code samples https://firebase.google.com/docs/firestore/manage-data/transactions
I believe firebase has a service for messaging — Firebase Cloud Messaging. I haven’t ever used it though.
You can try using Firebase to create a chat too.
There's a Storyboard -> SwiftUI converter on the Swiftify.com website.
I have tried converting multiple Storyboard files to SwiftUI and here is my observation:
- It can correctly convert the simple UI elements to the SwiftUI. 😎
- It had a really hard time converting nested UI elements.🥴
- Constraints are not converted accurately.🤨
- It can convert multiple view controllers within the storyboard.🙃
I really like the initiative and hope it will improve over time.
LOL yeah, I do this as well. To get the correct sizes, I use the following shellscript. It depends on ImageMagick being installed.
For the convert commandline tool, first install Homebrew at https://brew.sh/
Then install ImageMagick via:
# brew install imagemagick
Shellscript:
#!/bin/sh
orig="appicon.png" new_prefix="appicon_"
iphone_settings="58 87" iphone_spotlight="80 120" iphone_app="120 180"
ipad_settings="29 58" ipad_spotlight="40 80" ipad_app="76 152" ipad_pro_app="167"
iphone_ipad_notification="20 40 60"
app_store_icons="512 1024"
for i in $iphone_settings $iphone_spotlight $iphone_app $ipad_settings $ipad_spotlight $ipad_app $ipad_pro_app $app_store_icons $iphone_ipad_notification; do echo "Resizing to $i x $i" convert -resize $i $orig ${new_prefix}${i}.png done
Still, after you're done, you'll need to drag the images at their correct places. I haven't automated that, not worth it to me.
Let me ask this... as an experienced developer new to the iOS world... what resources, courses, etc. would you recommend? The swift.org language guide is really good and has helped me through most things... but there are still some mysteries specifically to iOS. Definitely some lifecycle mysteries, to me at least.
Most of the lessons I've seen are either expecting you to know nothing... or expecting you to have had a long history developing iOS. Not a lot of inbetween.
>If you make a boo-boo in declaring an element somewhere in code, for example you type TextField() without the two required parameters because autocomplete was having a nap (i.e. so your code is syntactically correct but not semantically correct), then the resulting compiler error you get will say something like "Type of expression is ambiguous without more context" or "Ambiguous reference to member 'padding'" - which is confusing enough, but what's worse is it appears on a seemingly random line halfway up the file on a line that was working perfectly just before and that has nothing to do with the misused constructor you just wrote
This was a major pain point when I was trying it out. However, things will change in Swift 5.2 – there is going to be new diagnostics architecture that should fix these problems.
Swift has been out of beta for more than 5 years and with this change still just waiting for release, I'd say it's not mature yet. So that 2-3 years is pretty optimistic.
Not the default app. but you could sign a contract with a voice over IP provider, buying a new phone number, and write an app for that using CallKit as documented in https://sendbird.com/blog/make-local-calls-with-callkit
then, you could port your old number to Google Voice, and use its API to automatically forward to your new number.
Or you may find that either the VOIP service, or Google Voice is sufficient.
Not free but....
SwiftUI for Masterminds: How to... https://www.amazon.com/dp/B0858VPPXL?ref=ppx_pop_mob_ap_share
I never buy tech books, they’re enormous and heavy. However, I wanted something concise and organized. Online resources are great but sometimes the material is spotty.