iphone os custom keyboard - ios

I've read a lot of topics about developing a custom keyboard for iOS and it's clear that it is impossible to build a system-wide alternative keyboard.
But I still try to understand how Emoji keyboard(the emoticons additional layer) could make it possible and it is an official app on AppStore (that means it passes Apple approval!).
Note that their keyboard, once installed, can be added in Keyboard section in Settings!
Thanks for help

Emoji apps enable a by-default-disabled keyboard built into iOS. If I recall correctly, it's enabled by default in certain regions (Japan) but disabled in most places. So they aren't adding a new keyboard, just revealing one that's already there.
edit: ... and here's how they do it

The Emoji Icons are a stored in the private use area of unicode. They won't look any good on a different device than an iPhone/iPad, this is Apple specific.
The app is just to enable the keyboard. You can do it yourself: Making An Emoji Enabeling App.
Have a look at The truth about iPhone Emoji, which sheds some light on the whole topic.

Related

Simulate Braille display

We've received reports from users that our app doesn't work correctly in iOS VoiceOver when using a Braille display. I've tested our app on iOS VoiceOver with sound, and it works correctly.
Is there a way to simulate a Braille display to reproduce this issue?
I noticed you said the radio buttons are the issue. This is sadly an iOS 12.x accessibility issue, and one I reported repeatedly to Apple. ALL radio buttons, checkboxes, text areas, and text fields which do not use external labels in text appear as unlabeled on the braille display.
This issue started at iOS 12.0, and as of yet (iOS 12.1.2) still exists. Note that, as described, when only using voice the issue doesn't exist it's solely braille display. There's no way developers can fix it directly - it's up to Apple.
There's a developer side workaround: Use normal text above the control to label it. Unelegant, I know.
Then there's a user side workaround: 4 times tap with 3 fingers copies last spoken text to clipboard, which will display the correct label for each control, but is obviously tedious.
Lastly, I found that if jumping to bottom of screen and scrolling up, the labels appear on the braille display - but disappear when scrolling back down. The displayed label belongs to the control above it.
Regards - a frustrated deafblind user & developer who can only use braille display and is slowly losing faith in Apple's accessibility.
PS. PLEASE report this to apple using the device feedback or some other way so this issue might get more attention - it's a HUGE accessibility issue for braille display users, so something Apple really should fix...

iOS - How to make custom keyboard extension work with physical keyboard

I have had this question for a long time and I tried to search it in iOS 10 APIs but I couldn't find any, if anyone knows the corresponding APIs, please help here.
So I have an iOS custom keyboard for Mandarin and it requires selecting word after some inputs.
Google's custom keyboard GBoard now supports Simplified Chinese and it works with iPad Pro Smart Keyboard and it will display a list of candidate words right below the cursor as shown in this video.
GBoard Simplified Chinese Input
But I couldn't find the corresponding API to make this happen for my own custom keyboard extension.
So 2 questions here:
Is it doable now to make a custom keyboard extension work for external physical bluetooth keyboard, and how? Not iPad Pro Smart Keyboard but generally using Apple bluetooth keyboard with say an iPad Air.
If #1 it not doable now, how can I make my custom keyboard work like GBoard so that when the user types some english chars, the candidate list will appear right below the cursor and then use arrow keys to navigate and enter to input.
Much appreciated.

Multiple keyboard layouts in an iOS keyboard extension

I'm currently working on a keyboard extension for iOS, and am now wondering how to integrate multiple layouts support into the system settings.
In the system settings, the default en_US keyboard has an additional menu (indicated by a arrow to the right), where you can choose from multiple keyboard layouts, as you can see in the screenshot from the iOS simulator below (iOS 9.1 13B137)
Can this be achieved with a custom keyboard extension, too? I can't find any documentation on it. (Which may mean that it either isn't possible using public APIs or I am too stupid to use Google.) I've searched quite a lot online, but most of what I find is about setting the keyboard locale in the Info.plist file or instructions on how to enable the system keyboard in different languages (which are registered as different keyboards), which I would like to avoid.
I can see an alternative, if this doesn't work, which would be to basically create multiple keyboard extensions in one wrapping app, which include the same code base, but define other layouts. However, this would look rather ugly, clutter up the code, and people will have to enable each layout individually, which, from my point of view, isn't the most user-friendly approach. As stated above, iOS ships with different keyboards for different languages, but I'm trying to provide multiple keyboard layouts for the same language, so this is not what I want.
This doesn't appear to be directly supported. Like you said, other third-party keyboards are stepping around this issue by providing alternate keyboard layouts as a function within the keyboard itself.
For example, Swype allows QWERTY/AZERTY/QWERTZ layout changes by long-pressing on the spacebar.

Creating an Emoji-Like Keyboard

I am looking to create an emoji keyboard, which works similar to the native one on iPhone.
Currently all apps that provide a keyboard, do not let you insert an emoji inline with the text.. rather they provide you the ability to 'paste' it in like an image.
In addition to this, if an emoji is sent to a user that doesnt have the app installed, will they see the 'emoji' or will it display as a bunch of random characters?
I was hoping someone could point me in the right direction, as I cannot find the detail I am looking for.
Thanks
As for creating custom keyboards, you should get started by reading Apple's official documentation on the subject.
To answer your question about displaying Emoji: Any platform that supports Emoji will see them as an Emoji. A good source to see which platforms support it is CanIEmoji.com. Any other platforms will likely display it as an empty square, since it is not a supported character.
Any custom emoji keyboard you create will show up like a picture attachment, iOS especially doesn't allow custom inline emojis. Check out these two articles they might help with even more info:
https://www.bluecloudsolutions.com/blog/emoji-apps/
https://medium.com/#mantia/so-you-want-to-build-an-emoji-keyboard-26450ba5136a

bluetooth keyboard override

Is there a way to force up a software keyboard when the user has a iOS bluetooth keyboard device installed?
Or, to that end, is it possible in code to disable a specific bluetooth device?
Thanks!
In most (maybe all?) iOS apps with which I have used Apple's bluetooth keyboard, pressing the eject key (located in the top right corner) will bring up the soft keyboard on the screen. Maybe that little factoid could help you in some way.
Not from within the application's code, if you're planning on getting into the app store. Apple expressly does not provide methods to show or hide keyboard, instead pushing you to use becomeFirstResponder and resignFirstResponder.
You may be able to do this through some non-AppStore-friendly methods, but somehow I don't think that's the answer you're looking for.
(Note - you could make a fake, Apple-looking keyboard when the real one is hidden, and check if the real one is hidden based on whether a view is visible, but if Apple notices you doing this, you'll get denied.)

Resources