Open mwager opened 10 years ago
I can't even install it via the 3.0 CLI tools =\
Error: grafting xml at selector "plugins" from "/Users/jasonfarnsworth/Dev/MobileClient/platforms/android/res/xml/config.xml" during config install went bad :(
at /usr/local/lib/node_modules/cordova/node_modules/plugman/src/util/config-changes.js:277:47
at Array.forEach (native)
at /usr/local/lib/node_modules/cordova/node_modules/plugman/src/util/config-changes.js:256:63
at Array.forEach (native)
at /usr/local/lib/node_modules/cordova/node_modules/plugman/src/util/config-changes.js:235:45
at Array.forEach (native)
at Object.module.exports.add_plugin_changes (/usr/local/lib/node_modules/cordova/node_modules/plugman/src/util/config-changes.js:231:35)
at /usr/local/lib/node_modules/cordova/node_modules/plugman/src/util/config-changes.js:321:28
at Array.forEach (native)
at Object.module.exports.process (/usr/local/lib/node_modules/cordova/node_modules/plugman/src/util/config-changes.js:320:49)
I now got it installed using the following command:
$ plugman --platform android --project ./platforms/android --plugin https://github.com/phonegap-build/PushPlugin.git
However, the Java Plugin (PushPlugin.java) should be modified:
From
import org.apache.cordova.api.CallbackContext;
import org.apache.cordova.api.CordovaPlugin;
To
import org.apache.cordova.CallbackContext;
import org.apache.cordova.CordovaPlugin;
I found this by looking at other Phonegap 3.0 JavaPlugins like Device.java
.
I don't know if this is the best approach but now I reveive messages on real android devices.
It would be really great if the docs could be updated.
@hiroio I somehow got around this error by adding following temporary to my android's config.xml: Also, the plugman outputs lots of errors if files already exist. Trying delete them helped me.
<plugin></plugin>
Yeah, it looks like the plugin.xml needs to be updated to avoid installation errors. At a bare minimum...
<config-file target="res/xml/config.xml" parent="plugins">
needs to be <config-file target="res/xml/config.xml" parent="/*">
.
Docs are behind on the 3.0 plugin changes, so I'm looking at the core plugins as a reference. I'll try to pull together a pull request for plugin.xml changes.
This error appears on my phone:-
error: Class not found
For Android!
EDIT: The error shown in Eclipse is: 07-23 15:26:27.720: D/PluginManager(20853): exec() call to unknown plugin: PushPlugin
I observed that the Push plugin doesn't get copied to the \platforms\android\assets\www\plugins unlike other core plugins. I tried a lot, but I'm very confused because of the directory structure having similar names.
@Pragith Try adding the following to res/xml/config.xml
:
<feature name="PushPlugin">
<param name="android-package" value="com.plugin.gcm.PushPlugin" />
</feature>
@mwager OMG! Thanks a lot! It worked. You don't know for how long I've been working on this issue.
I just submitted a pull request for Cordova and cordova-cli 3.0 issues -- issue #39.
@mwager have you had any luck with iOS? I'm not getting any errors, but the tokenHandler callback never gets fired now.
Edit 1 I'm getting this in the XCode console. I haven't been able to track down the issue yet:
2013-07-23 22:47:46.648 [11370:907] ERROR: Method 'register:' not defined in Plugin 'PushPlugin'
2013-07-23 22:47:46.650 [11370:907] -[CDVCommandQueue executePending] [Line 116] FAILED pluginJSON = [
"PushPlugin1385651646",
"PushPlugin",
"register",
[
{
"alert" : "true",
"ecb" : "onNotificationAPN",
"sound" : "true",
"badge" : "true"
}
]
]
Edit 2 From reading the 3.0 release notes, it would appear that the old signature of:
- (void)register:(NSMutableArray *)arguments withDict:(NSMutableDictionary *)options;
has been removed and needs to be replaced with something like
- (void)myMethod:(CDVInvokedUrlCommand*)command;
This is going to have to wait until tomorrow...
@hiroio I didn't try with iOS and pg 3.0 yet since I'm focussed on Android only right now. Think I'll wait to see what's going on here...
This should all be fixed in my pull request https://github.com/phonegap-build/PushPlugin/pull/39
I am getting this error after excuted plugman cli and pushplugin.java:
Warning: Ignoring platform 'android-10': build.prop is missing. Warning: Ignoring add-on 'addon-google_apis-google-14': File not found: manifest.ini
@mohan5070 if I had to take a guess, it would be that the v13 support APIs are clobbering the v14 APIs that you apparently already have in your project or something. You probably have to get that sorted out in Eclipse somehow. (Sorry, I'm not going to be of much help there since I've migrated to Android Studio.)
@jdhiro Thanks. I fixed all the issues.
I had to change the
Also, I had to rewrite the plugin JS itself to fit to the new plugin syntax (i.e. it gets wrapped by the cordova fn and put in cordova_plugins.js)
Should I send in a pull? I think this may break backwards-compat.
Is the issue with tokenHandler callback never gets fired on iOS fixed? I tried latest install from phonegap CLI to download the plugin, but the tokenhandler is still not fired. and no error messages at all.
Guys, is it now safe to use PushPlugin on PhoneGap 3.0 and beyond on Android and iOS ?, what should i do in order to avoid issues?
If it helps, on this app everything works with the plugin, even with ios7/cordova 3.x..
I'd like to reiterate omeriko's question: Is it safe to use PushPlugin with PhoneGap 3.x, and are there any known undocumented caveats?
i'm on 3.4 and it's working great for me. installed using CLI: cordova plugin add https://github.com/phonegap-build/PushPlugin.git
I've downgraded to Phonegap 3.4 (20) and still unable to get this plugin working by any method. Everytime I get a class not found error. Anyone any joy or tips?
Hi all I have the same issue.Some one can help me see the link: http://stackoverflow.com/questions/24839836/salesforce-android-app-remote-access-application-authorization
Heh guys am getting Register call but when ever i Click it i get Class not Found I manually add the Plugin and is Deploying on my phone but It says class not Fount what should i do. look below
<?xml version="1.0" encoding="UTF-8"?>
<widget xmlns = "http://www.w3.org/ns/widgets" id = "io.cordova.helloCordova" version = "2.9.0">
<description>
Push
</description>
<author href="http://cordova.io" email="dev@cordova.apache.org">
D-Raid
</author>
<access origin="*"/>
<preference name="loglevel" value="DEBUG" />
<!--
<preference name="splashscreen" value="resourceName" />
<preference name="backgroundColor" value="0xFFF" />
<preference name="loadUrlTimeoutValue" value="20000" />
<preference name="InAppBrowserStorageEnabled" value="true" />
<preference name="disallowOverscroll" value="true" />
-->
<feature name="App">
<param name="android-package" value="org.apache.cordova.App"/>
</feature>
<feature name="Geolocation">
<param name="android-package" value="org.apache.cordova.GeoBroker"/>
</feature>
<feature name="Device">
<param name="android-package" value="org.apache.cordova.Device"/>
</feature>
<feature name="Accelerometer">
<param name="android-package" value="org.apache.cordova.AccelListener"/>
</feature>
<feature name="Compass">
<param name="android-package" value="org.apache.cordova.CompassListener"/>
</feature>
<feature name="Media">
<param name="android-package" value="org.apache.cordova.AudioHandler"/>
</feature>
<feature name="Camera">
<param name="android-package" value="org.apache.cordova.CameraLauncher"/>
</feature>
<feature name="Contacts">
<param name="android-package" value="org.apache.cordova.ContactManager"/>
</feature>
<feature name="File">
<param name="android-package" value="org.apache.cordova.FileUtils"/>
</feature>
<feature name="NetworkStatus">
<param name="android-package" value="org.apache.cordova.NetworkManager"/>
</feature>
<feature name="Notification">
<param name="android-package" value="org.apache.cordova.Notification"/>
</feature>
<feature name="Storage">
<param name="android-package" value="org.apache.cordova.Storage"/>
</feature>
<feature name="FileTransfer">
<param name="android-package" value="org.apache.cordova.FileTransfer"/>
</feature>
<feature name="Capture">
<param name="android-package" value="org.apache.cordova.Capture"/>
</feature>
<feature name="Battery">
<param name="android-package" value="org.apache.cordova.BatteryListener"/>
</feature>
<feature name="SplashScreen">
<param name="android-package" value="org.apache.cordova.SplashScreen"/>
</feature>
<feature name="Echo">
<param name="android-package" value="org.apache.cordova.Echo"/>
</feature>
<feature name="Globalization">
<param name="android-package" value="org.apache.cordova.Globalization"/>
</feature>
<feature name="InAppBrowser">
<param name="android-package" value="org.apache.cordova.InAppBrowser"/>
</feature>
<feature name="PushPlugin">
<param name="android-package" value="com.plugin.gcm.PushPlugin" />
</feature>
<plugin name="PushPlugin" value="com.plugin.gcm.PushPlugin" />
@l-lawliett maybe you should try this:
remove the plugin from all platforms:
$ cordova plugin rm com.phonegap.plugins.PushPlugin
add it again using the cordova add
command:
cordova plugin add https://github.com/phonegap-build/PushPlugin.git
Okay am Gona try that as soon as possible got my mid term coming okay
@mwager the post above
I am new Git. Can some one provide me steps to apply patch 39 for this plugin in cordova project?
register not defined in PushPlugin.m
(void)register:(CDVInvokedUrlCommand*)command; { self.callbackId = command.callbackId;
NSMutableDictionary* options = [command.arguments objectAtIndex:0];
UIUserNotificationType UserNotificationTypes = UIUserNotificationTypeNone;
UIRemoteNotificationType notificationTypes = UIRemoteNotificationTypeNone;
id badgeArg = [options objectForKey:@"badge"];
id soundArg = [options objectForKey:@"sound"];
id alertArg = [options objectForKey:@"alert"];
if ([badgeArg isKindOfClass:[NSString class]])
{
if ([badgeArg isEqualToString:@"true"]) {
notificationTypes |= UIRemoteNotificationTypeBadge;
UserNotificationTypes |= UIUserNotificationTypeBadge;
}
}
else if ([badgeArg boolValue]) {
notificationTypes |= UIRemoteNotificationTypeBadge;
UserNotificationTypes |= UIUserNotificationTypeBadge;
}
if ([soundArg isKindOfClass:[NSString class]])
{
if ([soundArg isEqualToString:@"true"]) {
notificationTypes |= UIRemoteNotificationTypeSound;
UserNotificationTypes |= UIUserNotificationTypeSound;
}
}
else if ([soundArg boolValue]) {
notificationTypes |= UIRemoteNotificationTypeSound;
UserNotificationTypes |= UIUserNotificationTypeSound;
}
if ([alertArg isKindOfClass:[NSString class]])
{
if ([alertArg isEqualToString:@"true"]) {
notificationTypes |= UIRemoteNotificationTypeAlert;
UserNotificationTypes |= UIUserNotificationTypeAlert;
}
}
else if ([alertArg boolValue]) {
notificationTypes |= UIRemoteNotificationTypeAlert;
UserNotificationTypes |= UIUserNotificationTypeAlert;
}
notificationTypes |= UIRemoteNotificationTypeNewsstandContentAvailability;
UserNotificationTypes |= UIUserNotificationActivationModeBackground;
self.callback = [options objectForKey:@"ecb"];
if (notificationTypes == UIRemoteNotificationTypeNone)
NSLog(@"PushPlugin.register: Push notification type is set to none");
isInline = NO;
if ([[UIApplication sharedApplication]respondsToSelector:@selector(registerUserNotificationSettings:)]) {
UIUserNotificationSettings *settings = [UIUserNotificationSettings settingsForTypes:UserNotificationTypes categories:nil];
[[UIApplication sharedApplication] registerUserNotificationSettings:settings];
[[UIApplication sharedApplication] registerForRemoteNotifications];
} else {
[[UIApplication sharedApplication] registerForRemoteNotificationTypes:notificationTypes];
}
[[UIApplication sharedApplication] registerForRemoteNotificationTypes:notificationTypes];
if (notificationMessage) // if there is a pending startup notification
[self notificationReceived]; // go ahead and process it
}
/*
Is it possible to use the plugin with phongap v3.x (yet)?
I could'nt get it running, the readme.md seems not to be very helpful here.
Should I use plugman? or does the plugin need upgrading for use via the new node based cli tools? ("cordova plugin add ...")
Tested only on Android yet (phonegap 3.0 on a mac, followed manual install, using cordova-3.0.0.jar)
"adb logcat" output:
Cheers, Michael