IMPORTANT: All Ionic users - please update your keyboard plugin

Hello friends! Take a look at the blog post for more information: http://blog.ionic.io/pluginz-be-buggin/.

We would like to inform as many people as possible so they can avoid having to submit their app to the App Store twice. Just to reassure everyone - nothing about your app will break, and no apps are being removed from the App Store.

To update:

ionic plugin rm ionic-plugin-keyboard    
ionic plugin add ionic-plugin-keyboard

Thanks! :heart:

8 Likes

I tried uploading a new App Store version last night and faced a different error - it would upload a build and then after staying in ‘processing’ stage for many hours (not normal) it would show a ITC.apps.preReleaseBuild.errors.processingFailed error - no other explanation. Nothing has changed in my app, so I am hoping it has something do with this

I’m still using an older version of ionic and it was a different plugin in older versions

Cordova CLI: 5.3.1
Ionic Version: 1.1.0
Ionic CLI Version: 1.7.0
Ionic App Lib Version: 0.5.1-beta.0
ios-deploy version: Not installed
ios-sim version: 5.0.2 
OS: Mac OS X El Capitan
Node Version: v0.12.4
Xcode version: Xcode 7.2.1 Build version 7C1002 

This version did not have ionic-plugin-keyboard - it instead had com.ionic.keyboard, so I did

ionic plugin rm com.ionic.keyboard 
ionic plugin add ionic-plugin-keyboard

I do have this still in my code - do I need to remove it

 if (window.cordova && window.cordova.plugins.Keyboard) {
                cordova.plugins.Keyboard.hideKeyboardAccessoryBar(true);
                // solves screen bouncing on form input
                // since I am using JS Scroll
                cordova.plugins.Keyboard.disableScroll(true);
            }

I’ve just put the new version into iTunes upload - will let you know if I face the same error. Very frustrating as I’m trying to upload a version that fixes some important bugs! Doesn’t help when the error is this odd, but given your post, I’m hoping this is why.

1 Like

Nope - My uploads are failing :frowning: I’ve tried commenting out that code too

I did a phonegap/zmNinja/platforms/ios]$ find . | xargs fgrep hideKeyboardAccessoryBar 2>/dev/null | less in my project directory
It looks like other files / plugins do call this - since you have it commented in your code, will this cause issues? My uploads are still failing

./www/lib/ionic-pullup/example/www/js/app.js:      cordova.plugins.Keyboard.hideKeyboardAccessoryBar(true);

./www/lib/ngCordova/dist/ng-cordova.js:        return cordova.plugins.Keyboard.hideKeyboardAccessoryBar(bool);
./www/lib/ngCordova/dist/ng-cordova.min.js:})},

./www/plugins/ionic-plugin-keyboard/www/ios/keyboard.js:Keyboard.hideKeyboardAccessoryBar = function(hide) {
./www/plugins/ionic-plugin-keyboard/www/ios/keyboard.js:    // exec(null, null, "Keyboard", "hideKeyboardAccessoryBar", [hide]);
./www/plugins/ionic-plugin-keyboard/www/ios/keyboard.js:    console.warn('hideKeyboardAccessoryBar has been removed until a method is found that doesn\'t get rejected from the App Store.')
./zmNinja/Plugins/ionic-plugin-keyboard/IonicKeyboard.h:// @property (readwrite, assign) BOOL hideKeyboardAccessoryBar;
./zmNinja/Plugins/ionic-plugin-keyboard/IonicKeyboard.m:// @synthesize hideKeyboardAccessoryBar = _hideKeyboardAccessoryBar;
./zmNinja/Plugins/ionic-plugin-keyboard/IonicKeyboard.m:    // self.hideKeyboardAccessoryBar = YES;
./zmNinja/Plugins/ionic-plugin-keyboard/IonicKeyboard.m:// - (BOOL)hideKeyboardAccessoryBar {
./zmNinja/Plugins/ionic-plugin-keyboard/IonicKeyboard.m://     return _hideKeyboardAccessoryBar;
./zmNinja/Plugins/ionic-plugin-keyboard/IonicKeyboard.m:// - (void)setHideKeyboardAccessoryBar:(BOOL)hideKeyboardAccessoryBar {
./zmNinja/Plugins/ionic-plugin-keyboard/IonicKeyboard.m://     if (hideKeyboardAccessoryBar == _hideKeyboardAccessoryBar || ![self.webView isKindOfClass:[UIWebView class]]) {
./zmNinja/Plugins/ionic-plugin-keyboard/IonicKeyboard.m://     if (hideKeyboardAccessoryBar) {
./zmNinja/Plugins/ionic-plugin-keyboard/IonicKeyboard.m://     _hideKeyboardAccessoryBar = hideKeyboardAccessoryBar;
./zmNinja/Plugins/ionic-plugin-keyboard/IonicKeyboard.m:// - (void) hideKeyboardAccessoryBar:(CDVInvokedUrlCommand*)command {
./zmNinja/Plugins/ionic-plugin-keyboard/IonicKeyboard.m://       self.hideKeyboardAccessoryBar = [value boolValue];

My complete plugin list

onic plugin list
com.phonegap.plugins.OrientationLock 0.1 "OrientationLock"
cordova-plugin-file 2.1.0 "File"
cordova-plugin-inappbrowser 1.0.0 "InAppBrowser"
cordova-plugin-ios-longpress-fix 1.0.1 "iOS LongPress Fix"
cordova-plugin-splashscreen 3.2.1 "Splashscreen"
cordova-plugin-touchid 0.3.0 "Touch ID"
cordova-plugin-websocket 0.11.0 "WebSocket for Android"
cordova-plugin-whitelist 1.2.1 "Whitelist"
de.appplant.cordova.common.registerusernotificationsettings 1.0.1 "RegisterUserNotificationSettings"
de.appplant.cordova.plugin.badge 0.7.1 "Cordova Badge Plugin"
de.appplant.cordova.plugin.email-composer 0.8.2 "EmailComposer"
de.appplant.cordova.plugin.local-notification 0.8.2-dev "LocalNotification"
hu.dpal.phonegap.plugins.PinDialog 0.1.3 "PinDialog"
ionic-plugin-keyboard 2.0.1 "Keyboard"
nl.x-services.plugins.insomnia 4.0.1 "Insomnia (prevent screen sleep)"
org.apache.cordova.console 0.2.13 "Console"
org.apache.cordova.device 0.3.0 "Device"
org.apache.cordova.media 0.2.16 "Media"
org.apache.cordova.statusbar 0.1.10 "StatusBar"
org.devgeeks.Canvas2ImagePlugin 0.6.0 "Canvas 2 Image"
phonegap-plugin-push 1.3.0 "PushPlugin"
uk.co.whiteoctober.cordova.appversion 0.1.7 "AppVersion"

I created a new project yesterday evening and submitted it for review last night and I was getting a “The Resulting API analysis file is too large” as a warning, it was not a fail state when validating and then submitting the app which is now currently in review.

Can I assume that as I made a new project I’ve got the most up to date ionic-plugin-keyboard and the message relates to something else?

Yep you should be fine, let us know if that’s not the case though!

1 Like

Cheers Tim, will do!

Just a heads up to say the app passed review as hoped :slight_smile:

1 Like

It appears that replacing the keyboard plugin breaks my app and I’m not sure what to do.

After running the commands to remove and re-install the keyboard plugin, when I tap in an input field the keyboard appears, but when I tap “Done” the keyboard is hidden, but so is all of the content. Here’s a screen shot showing the active keyboard, and after “Done” is tapped:

image

I don’t use any specific keyboard plugin functionality (I’m not monitoring any keyboard plugin events, etc.), so I thought maybe I could just remove the keyboard plugin and not install the new version, but the same exact problem occurs with the keyboard plugin removed.

I’ve spent most of the day trying different things to try and work around the problem, but with no luck.

Right now it looks like my only option is to leave the old keyboard plugin in the app and hope for the best with Apple, but I’d rather not rely on luck. Anyone have an idea what might be going on here that causes the content to be removed when the keyboard is hidden? Thanks.

Do we need to update this part also?

if (window.cordova && window.cordova.plugins.Keyboard) {
cordova.plugins.Keyboard.hideKeyboardAccessoryBar(true);
}

I had to remove the iOS platform and then re-add it to get it to work again. I’m assuming the same would have to be done for Android as well.

Same issue here. Any suggestions?

Hi all,
Is there already a fix in progress?
I’m having difficulties with the hiding the keyboard.
I open an InAppBrowser which loads a login screen, hen the keyboard pops up, but after login the keyboard is still opened.
And there is no “Done” button to close it…So users are stuck with the keyboard opened?

Same here on iOS, testing in Ionic View : I have a SELECT element and the “Done” link no longer appears. I have tried to overwrite the select directive, bound successfully on the ‘touchstart’ event, but seems that it fires an error in cordova.plugins.Keyboard.hideKeyboardAccessoryBar(flase); (however, how to be sure ? the doc does not mention any error condition as return value).

Hi, you just need to change the flag to false
cordova.plugins.Keyboard.hideKeyboardAccessoryBar(false)

It should show the “done” button on iOS keyboard.

Did you find any solution or hack for this? I am in troubles right now :sob:

2 Likes

@tim - we are having a very strange issue with a keyboard breaking our google maps page. are you able to say if this is a know problem? it only happens on Android.

1 Like