phonegap 推送插件 - 如何将 source="pgb" 更改为 npm

Posted

技术标签:

【中文标题】phonegap 推送插件 - 如何将 source="pgb" 更改为 npm【英文标题】:phonegap push plugin- How do I change source="pgb" to npm 【发布时间】:2016-10-25 14:20:47 【问题描述】:

我用推送消息构建了一个应用程序 我得到消息插件不再可用。

“此应用使用 PhoneGap Build 存储库中的插件。这些插件在 2016 年 11 月 15 日之后将无法访问”

pushplugin 的 config.xml:

这是我的代码:

                    try 
                        pushNotification = window.plugins.pushNotification;
                        if (device.platform == 'android' || device.platform == 'Android' || device.platform == 'amazon-fireos') 
                            pushNotification.register(pushsuccessHandler, pusherrorHandler, 
                                "senderID": "123456789",
                                "ecb": "onNotification"
                            );
                         else 
                            pushNotification.register(tokenHandler, pusherrorHandler,  "badge": "true", "sound": "true", "alert": "true", "ecb": "onNotificationAPN" );
                        
                    
                    catch (err) 
                        txt = "There was an error on this page.\n\n";
                        txt += "Error: " + err.message + "\n\n";
                        console.log(txt);
                    

// 处理 Android 的 GCM 通知 函数 onNotification(e) 切换(e.event)

            case 'registered':
                alert(e.regid);
                if (e.regid.length > 0) 
                    alert(e.regid);
                    var jsonText = 
                        userName: empId.value,
                        RegId: e.regid,
                        IsAndroid: 1,
                    
                    $.ajax(
                        type: "Post",
                        url: basePath + "ExternalWebService.asmx/SaveRegId",
                        data: JSON.stringify(jsonText),
                        contentType: "application/json; charset=utf-8",
                        dataType: "json",
                        success: function (data) 
                            alert("secccess saveRegId");
                        ,
                        error: function (xhr, ajaxOptions, thrownError) 
                            alert(xhr.responseText + " " + xhr.error);
                            alert("error saveRegId");
                        
                    );

                
                break;
            case 'message':

                var snd = new Media("./audio/sound.mp3");
                snd.play();
                if (e.foreground) //when the application is in the foreground (we can see it)
                    window.location.reload();
                
                else   // otherwise we were launched because the user touched a notification in the notification tray.
                    if (e.coldstart) //when the application is closed
                        window.location.reload();
                    
                    else //when the application is open but in the background (we can’t see it)
                        window.location.reload();
                    
                
                break;
            case 'error':
                console.log('ERROR -> MSG:' + e.msg + '');
                break;
            default:
                console.log('Unknown, an event was received and we do not know what it is');
                break;
        

    
    // handle callback notifications
    function pushsuccessHandler(result) 
        alert('pushNotification register success:' + result + '');
    

    function pusherrorHandler(error) 
        alert('pushNotification register error:' + error + '');
    
    function tokenHandler(result) 
        console.log('token: ' + result + '');
        var jsonText = 
            userName: empId.value,
            RegId: result,
            IsAndroid: 0,
        
        $.ajax(
            type: "Post",
            url: basePath + "ExternalWebService.asmx/SaveRegId",
            data: JSON.stringify(jsonText),
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            success: function (data) 
                console.log("secccess saveRegId");
            ,
        );
    

【问题讨论】:

正在寻找同样的东西,兄弟 【参考方案1】:

你有这个 < gap:plugin name="com.phonegap.plugins.pushplugin" spec="2.5.0" source="pgb" />

你必须得到这个:

<plugin name="phonegap-plugin-push" source="npm" />

你是怎么做到的?

首先转到https://www.npmjs.com/ 并搜索插件的ID,在本例中为com.phonegap.plugins.pushplugin。 如果找到了,请继续使用相同的 id

在这种情况下,该插件不在 npmjs 上,因为它已被弃用,所以去谷歌搜索com.phonegap.plugins.pushplugin

第一个链接指向old deprecated repo。 该插件的 README.md 会将您指向 new version of the plugin 在插件的安装信息中有一个additional resources section 这解释了如何在 phonegap build 上使用插件

<preference name="android-build-tool" value="gradle" /> <plugin name="phonegap-plugin-push" source="npm"> <param name="SENDER_ID" value="<Your Sender ID>" /> </plugin>

如果你想指定一个版本,你可以像以前一样使用 spec 属性,这是你必须添加的,以便在发言时使用最新版本

<preference name="android-build-tool" value="gradle" /> <plugin name="phonegap-plugin-push" spec="1.8.3" source="npm"> <param name="SENDER_ID" value="<Your Sender ID>" /> </plugin>

如果你想继续使用你当前的插件,尽管被弃用,你可以使用 github url 而不是使用 npm

&lt;plugin spec="https://github.com/phonegap-build/PushPlugin" /&gt;

【讨论】:

【参考方案2】:

好的,插件存在于 NPM 存储库中,但您只需搜索它们。它们有不同的 ID(包 ID)。这是 Cordova 插件搜索页面:http://cordova.apache.org/plugins/

我不确定您使用的是哪一个,但这里有一些:

https://www.npmjs.com/package/cordova-plugin-pushplugin

https://www.npmjs.com/package/PushPlugin_V2

https://www.npmjs.com/package/cordova-plugin-gcmpushplugin

以下是 Phonegap 的博客文章,称 PGP 存储库将于 11 月中旬关闭:

http://phonegap.com/blog/2016/10/13/pgb-repository-shutting-down/

【讨论】:

以上是关于phonegap 推送插件 - 如何将 source="pgb" 更改为 npm的主要内容,如果未能解决你的问题,请参考以下文章

如何在推送插件 PhoneGap/Cordova 4.0 中替换 window.plugin(已弃用)?

带有 iOs 的 Phonegap 推送通知插件

将 Parse 推送通知与 Phonegap 集成

使用 phonegap + jQuery mobile 推送通知

Phonegap 插件推送在 iOS 13 及更高版本上返回奇怪格式的 iOS 设备令牌

使用 PhoneGap 管理推送通知的平台