Most for iOS Devices support 3d Touch and it’s an awesome way to preview details if you don’t know about 3d touch and how you can implement it check this tutorial.

Problems

These problems are a real problem I tackle to solve it The problem is most of the online tutorials explain Peek and Pop in a bad way can’t reuse code (DRY) and use this function indexPathForRow(at: location).

Problem 1 (Complex UI)

If you can complex UI like in our case UITableView and each cell have UICollectionView It’s very and may be impossible to select a correct collection cell using indexPathForRow(at: location).I …


Vapor (backend framework with Swift)

Problem

I face a problem to when developing a Today Extention for Iqraaly App the extension closed without any indication 🤔what happens the code is work perfect. after searching I found today extension have memory limit only 16 MB who the responsible for this in the code …

I download book cover from URL after checking the size of images the smallest one is 1 MB.

I should resize the image before download it, I start learning vapor from 3 weeks it’s time to use my new skills 💪🏼

How I can Resize Image in Vapor?

it’s not like iOS you can use UIImage (UIKit) as we know…


How you can create a Model that works for Realm Database and Network Layer?

JSONExpot 🎊🎊

I use JSONExport to generate Model from JSON but what about change this model to work with realm database and network layer. I used to do it manually but today I make it automatically.

I send Pull request to Ahmed Ali the owner of JSONExport and hope he accepts it.

You can download the code here

add JSON Text > select type > save files

You can now generate Model Object that used in Realm Database and Network Layer.it’s simple just select (swift-codable -realm) from supported Language


Problem

You used to check crashes using crashlytics or any other crash report tool. But before you want to fix the crash you want to know the scenario of the crash to ensure you fix the crash but you don’t know the user’s scenario.

We used to use print or NSLog when we debug in the development stage but how we can know what happens? when the application on life. I will list some tools that can help you to log what happens before the crash

Crashlytics (Custom Log)

From Documentation

It’s often useful to have some context recorded about the events leading up…


How you can test APN (Apple Push Notifications)?

Problem

Sometimes we haven't access to the dashboard of PN and you need to test the PN in your app it’s simple. I collect most of the Desktop and Web Apps that can help you to test PN in your deveice.

Desktop App

Knuff (I prefer this)❤️

it has automatic token detection no need to print token in the console

Easy APNs Provider

APN Tester Free

PushMeBaby

NWPusher

Web App

About the Author

Here is my GitHub, portfolio, and other stuff, so gets in touch if you have any questions in mind or drop me an email.


Update UI Example

Why remote config

From Documentation

Change the behavior and appearance of your app without publishing an app update, at no cost, for unlimited daily active users.

You should have an iOS project in firebase. If you want to setup firebase you can check this

Create parameters

You can create parameter as key and value like show_label as a key and true as a value but the best practices are to create JSON have related values to limit internet request to Firebase

  • Make the value as login_screen and the value is a JSON have related values for this screen

Back to Xcode 🤗


Problem

Our tester in Iqraaly needs to simulate a bad internet connection and test the Application setting of download only using wifi and what the reaction of the app.

I know before how I can simulate network conditions in a real device. you can open Network link conditioner in a real device.

Steps in iOS Real Device


What’s OperationQueue

From Apple Documentation

An operation queue executes its queued Operation objects based on their priority and readiness. After being added to an operation queue, an operation remains in its queue until it reports that it is finished with its task. You can’t directly remove an operation from a queue after it has been added.

OperationQueue have a property called maxConcurrentOperationCount and you can set it with 1 to make serial OperationQueue that work perfectly if the operations are synchronized operation.

The Problem

When I detect there was interference between sensors frames when I want to send it to Bluetooth. What happen!!🤔 we…


Why do we hire testers where we need to hire more software developers? .. this story is based on my experience of working on Egyptian startups environment, and I would say that it’s free advice to project managers and CTOs.

What is happening:

Users report a crash 🚧. The software developer checked the crash report system and he found the crash 🎉🎉. It’s time to a quick fix 💉.

A software developer begins fixing a bug in the application, and he is making changes in different files while fixing this bug. The developer finally fixed the bug but we found that there are…


Every Day you write code and sometimes you forget to kill retain cycle. I want to stop this and try to make something notify me

First, I get the code from Arek Holko article that check retain cycle depend on check the ViewController object in viewDidDisApper

The assert will make your app crash if the View Controller still in memory and not released that notify you in testing about retain cycle

I didn’t want to add viewDidDisapper in all ViewController in the app it’s time to think in swizzling I found good Generic method to exchange the implementation of the function viewDidDisApper here but I add little changes.

Then I should use swizzling with UIViewController to change the default implementation of ViewDidDisApper

Finally, you should exchange the implementation in AppDelegate

dimo hamdy

iOS Engineer work @Iqraaly ex @1sheeld and live @github

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store