`

phonegap推送实现(android)

 
阅读更多

需求

必备知识

这篇文章至少需要有过一个中等层次的PhoneGap的开发经验

必须产品

PhoneGap Build


<!--[if !supportLineBreakNewLine]-->
<!--[endif]-->

用户级

全部适用


<!--[if !supportLineBreakNewLine]-->
<!--[endif]-->

上一篇文章是通过PhoneGap能够在苹果设备上推送通知。在这篇文章中,我将会讲解如何在Android平台上使用PhoneGap去推送通知。通过对比,我发下我的通知在Android设备上的推送速度更快。


<!--[if !supportLineBreakNewLine]-->
<!--[endif]-->

Google Cloud Messaging


<!--[if !supportLineBreakNewLine]-->
<!--[endif]-->

Android的通知推送可以通过 GoogleCloud MessagingGCM的服务,这个和苹果的通知推送服务相似。以前它们都是对C2DM支持(用于云与设备之间消息传递的框架),但是现在那些API已经放弃使用了,还有就是GoogleCloud Message提供了更多增强实现,这些都是C2DM所提供不到的。通过 Cordova/PhoneGap 插件能够帮组你利用到GoogleCloud Messaging的服务。


<!--[if !supportLineBreakNewLine]-->
<!--[endif]-->

消息的大小分配给GCM的净负荷是4kb(只是字符串数据),明显地比苹果推送所要求的256个位要大很多。这里有一篇文章关于这些消息发送到底支持那些数据类型。还有我建议你在你构建你的应用程序之前先在这里阅读一下应该怎样去使用这样服务,因为我在这篇文章中很多关于这方面的细节都没有讨论到。某些点我需要在这篇文章中着重强调一下是:

<!--[if !supportLists]-->·         <!--[endif]-->GCM并不保证消息的分发或者它的顺序。

<!--[if !supportLists]-->·         <!--[endif]--> 并不需要在一个Android设备上运行一个Android应用才能接受到消息。其实它是通过网络的广播,当一个消息到达的时候,系统就会唤醒Android应用,当然这需要你为你的应用程序设置好正确的广播接受者和权限。

<!--[if !supportLists]-->·         <!--[endif]-->GCM并不提供任何内建的用户接口或者消息的处理。GCM只是简单的传递没处理过的消息数据然后直接送到对应的Android应用上,这样你就拥有全部对数据处理的权利。例如应用可以发送一个通知、显示一个自定义的用户接口或者悄悄地同步数据。

设置如何去推送通知

通过这些步骤就能在你的Android 应用程序去推送通知:

1.      通过命令行工具或者Eclipse去创建一个AndroidCordova 项目(我们推荐使用命令行)

2.      下载GCM Cordova 插件

3.      跟着插件说明的以下步骤:

<!--[if !supportLists]-->·         <!--[endif]-->  要跟着说明文档所写地去设置你的Google Cloud Messaging 帐号和注意记下位于URL中的项目ID。举个例子,下面加粗的数字就是你需要发送给register()方法:

 




<!--[if !supportLineBreakNewLine]-->
<!--[endif]-->

<!--[if !supportLists]-->1.   <!--[endif]--><?xml:namespace prefix = "o" />

<!--[if !supportLists]-->2.   <!--[endif]--> 

<!--[if !supportLists]-->3.   <!--[endif]-->https://code.google.com/apis/console/?pli=1#project:824841663942

复制代码



<!--[if !supportLineBreakNewLine]-->
<!--[endif]-->

<!--[if !supportLists]-->·         <!--[endif]-->  不要忘记将以下代码换成你的GCM项目的ID

 




<!--[if !supportLineBreakNewLine]-->
<!--[endif]-->

<!--[if !supportLists]-->1.   <!--[endif]-->window.GCM.register("[your_sender_id]", "GCM_Event", GCM_Success, GCM_Fail );

复制代码





<!--[if !supportLineBreakNewLine]-->
<!--[endif]-->

<!--[if !supportLists]-->·         <!--[endif]-->  包含你的发送器的ID

 




<!--[if !supportLineBreakNewLine]-->
<!--[endif]-->

<!--[if !supportLists]-->1.   <!--[endif]-->window.GCM.register("824841663942", "GCM_Event", GCM_Success, GCM_Fail );

复制代码





<!--[if !supportLineBreakNewLine]-->
<!--[endif]-->

4. 当一个应用接受到一个消息的时候要为它添加处理函数决定它是否打开。例如你可能会显示一个弹出警告或者一个状态栏通知。

Note:这个插件将会处理GCM的登记,并有对应的方法去接收一个消息,但它实际上并不为这些通知做出响应,这些就是你需要添加的东西。你也可以去更深入阅读关于如何了解怎么添加原生代码去产生一个状态栏通知。


<!--[if !supportLineBreakNewLine]-->
<!--[endif]-->

如果你需要更多有关于创建GCM项目的资料,某些特定的步骤你可以在这里找到。


<!--[if !supportLineBreakNewLine]-->
<!--[endif]-->

PhoneGap插件包含一个简单的项目,并已经为通知推送设置寄存器,包括改变了AndroidManifest.xml和插件的配置。而你所要做的事就是修改CORDOVA_GCM_script.js文件,这样你就能够在你的register()函数里面使用GCM发送者/项目的ID,这有你立马运行它或者将这个项目作为参考并根据自己的需求做修改。


<!--[if !supportLineBreakNewLine]-->
<!--[endif]-->

如果你偏向于利用Eclipse去编写你的代码,那么你简单地通过导入之前所创建并包含该插件的Android项目,这样你就可以开始你的工作了。

1. Choose File | New |Project

2. 选择“Android Project from Existing Code”



 

1.选择“Android Project from Existing Code”


<!--[if !supportLineBreakNewLine]-->
<!--[endif]-->

运行示例应用

当你运行插件中的示例代码时,它会尝试自动注册你的设备。如果注册成功,你会看到消息中包含一个注册ID。(看看下面截图中我圈起来的REGID字符串,这是我在我的Galaxy Tablet中运行得到的结果)



 

 

2:你会看到消息中包含一个注册的ID

当然你也应该可以在你的控制面板中看看一下的输出:



<!--[if !supportLineBreakNewLine]-->
<!--[endif]-->

<!--[if !supportLists]-->1.   <!--[endif]-->10-24 18:24:20.720: V/GCMReceiver:onRegistered(21989): Registration ID arrived!

<!--[if !supportLists]-->2.   <!--[endif]-->10-24 18:24:20.730: V/GCMReceiver:onRegisterd(21989): {"regid":"APA91bFobAwM7P3Okxy2al8RI12VcJFUS-giXWTOoWXIObtSPOE1h7FuH1VPLBPgshDI_Fp7aIYVET-ssvGUErlWYA0cKPGhoXT1daqyDsEfem9ZtgZNRhQFv7kLCIVSigYlpMluToPiSHSsFSEdtCDfKoOZqNPsfg","event":"registered"}

<!--[if !supportLists]-->3.   <!--[endif]-->10-24 18:24:20.730: V/GCMPlugin:sendJavascript(21989): javascript:GCM_Event({"regid":"APA91bFobAwM7P3Okxy2al8RI12VcJFUS-giXWTOoWXIObtSPOE1h7FuH1VPLBPgshDI_Fp7aIYVET-ssvGUErlWYA0cKPGhoXT1daqyDsEfem9ZtgZNRhQFv7kLCIVSigYlpMluToPiSHSsFSEdtCDfKoOZqNPsfg","event":"registered"})

复制代码





<!--[if !supportLineBreakNewLine]-->
<!--[endif]-->

一旦你得到了像以上所示的注册ID,你就可以开始编写你的服务端代码。以下的部分将会讲解怎么使用Node.JS代码去发送一条消息给你的应用程序。或者,你也可以使用Urban Airship或者PushWoosh去发送一个通知。当收到这个消息时,你将会看到如下面截图所示的文本显示在屏幕上:



 

3.当收到一条消息时,你将会看到这些信息显示出来。


<!--[if !supportLineBreakNewLine]-->
<!--[endif]-->

这是虽然这个插件不做任何的处理。接下来的部分我们将会讲解通过添加一些代码使得但接收到一条消息的时候将会显示一个状态栏通知。


<!--[if !supportLineBreakNewLine]-->
<!--[endif]-->

状态栏通知


<!--[if !supportLineBreakNewLine]-->
<!--[endif]-->

由于这个插件只是简单地接收消息——不管你的应用程序是否是在运行——但是即使消息到达了也没有做任何处理,你决定它应该做出怎样的响应。一个常见的需求就是把这个消息显示在一个原生的状态栏上。在IOS上,这个过程会有所不同,这个通知会被自动显示。但是在Android上你需要为它编写明确的代码。


<!--[if !supportLineBreakNewLine]-->
<!--[endif]-->

其中一个选择就是使用Cordova StatusBarNotification 插件去实现这样的效果。如果你想用更快的解决方案,你可以通过简单添加原生的Java代码到你的GCMIntentService.javaonMessage()方法里面,就像一下代码那样:


<!--[if !supportLineBreakNewLine]-->
<!--[endif]-->

<!--[if !supportLists]-->1.   <!--[endif]-->String message = extras.getString("message");

<!--[if !supportLists]-->2.   <!--[endif]-->String title = extras.getString("title");

<!--[if !supportLists]-->3.   <!--[endif]-->Notification notif = new Notification(android.R.drawable.btn_star_big_on, message, System.currentTimeMillis() );

<!--[if !supportLists]-->4.   <!--[endif]-->notif.flags = Notification.FLAG_AUTO_CANCEL;

<!--[if !supportLists]-->5.   <!--[endif]-->notif.defaults |= Notification.DEFAULT_SOUND;

<!--[if !supportLists]-->6.   <!--[endif]-->notif.defaults |= Notification.DEFAULT_VIBRATE;

<!--[if !supportLists]-->7.   <!--[endif]--> 

<!--[if !supportLists]-->8.   <!--[endif]-->Intent notificationIntent = new Intent(context, TestSampleApp.class);

<!--[if !supportLists]-->9.   <!--[endif]-->notificationIntent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);

<!--[if !supportLists]-->10.  <!--[endif]-->PendingIntent contentIntent = PendingIntent.getActivity(context, 0, notificationIntent, 0);

<!--[if !supportLists]-->11.  <!--[endif]--> 

<!--[if !supportLists]-->12.  <!--[endif]-->notif.setLatestEventInfo(context, title, message, contentIntent);

<!--[if !supportLists]-->13.  <!--[endif]-->String ns = Context.NOTIFICATION_SERVICE;

<!--[if !supportLists]-->14.  <!--[endif]-->NotificationManager mNotificationManager = (NotificationManager)

<!--[if !supportLists]-->15.  <!--[endif]-->context.getSystemService(ns);

<!--[if !supportLists]-->16.  <!--[endif]-->mNotificationManager.notify(1, notif);

复制代码




<!--[if !supportLineBreakNewLine]-->
<!--[endif]-->

还有要记得要添加以下的导入,这样上面的代码才能实现:




<!--[if !supportLineBreakNewLine]-->
<!--[endif]-->

<!--[if !supportLists]-->1.   <!--[endif]-->import android.app.Notification;

<!--[if !supportLists]-->2.   <!--[endif]-->import android.app.NotificationManager;

<!--[if !supportLists]-->3.   <!--[endif]-->import android.app.PendingIntent;

复制代码





<!--[if !supportLineBreakNewLine]-->
<!--[endif]-->

要确定你已经使用YourActivityClassName.class替换继承至DroidGap的子类的名字。例如,在示例项目中我们叫它MainActivity


<!--[if !supportLineBreakNewLine]-->
<!--[endif]-->

以上的代码将会设置一个带有一个星星图片的通知,并伴随震动和默认声音。这个例子已经在我的Android Galaxy Tablet上运行了,图如下所示(红色圈圈标记)


<!--[if !supportLineBreakNewLine]-->
<!--[endif]-->



 

4.状态栏通知(包含星型图片和震动、默认声音)


<!--[if !supportLineBreakNewLine]-->
<!--[endif]-->

当你点击这个通知后,那么应用程序将会打开并显示它说真实收到的消息。



 

5.点击那个通知将会触发应用程序打开并显示它所收到的消息。


<!--[if !supportLineBreakNewLine]-->
<!--[endif]-->

状态栏的显示因不同的设备而有所不同。在一般的Android手机上,是会显示在最上面而不是像我的截图那样显示在底端。


<!--[if !supportLineBreakNewLine]-->
<!--[endif]-->

通过node-gcm去发送一条消息


<!--[if !supportLineBreakNewLine]-->
<!--[endif]-->

这里是通过Node.js 库使得Google Cloud Messaging去发送通知。它被称为称为node-gcm。下面的这些代码是为了让我的设备能发送一条消息。

相信你们注意到我改变了那些键。在发送的参数中,用你在申请Google Cloud Messaging 服务时Google给你的ID去指定你自己的API键。你会收到两个API键,一个浏览器键和服务器键,这里两个可能都会用到。如果其中一个不能用,试一下另外一个。还有就是当你注册使用到以上插件的时候,也要指定返回给你的应用程序的值。当你运行你的应用程序并调用GCM register函数的时候,注册的ID将会在你的屏幕和控制台上显示。




<!--[if !supportLineBreakNewLine]-->
<!--[endif]-->

<!--[if !supportLists]-->1.   <!--[endif]-->var gcm = require('node-gcm');

<!--[if !supportLists]-->2.   <!--[endif]--> 

<!--[if !supportLists]-->3.   <!--[endif]-->var message = new gcm.Message();

<!--[if !supportLists]-->4.   <!--[endif]-->var sender = new gcm.Sender('AIzaSyCDx8v9R0fMsAsjoAffF-P3FCFWXlvwKgL');

<!--[if !supportLists]-->5.   <!--[endif]-->var registrationIds = [];

<!--[if !supportLists]-->6.   <!--[endif]--> 

<!--[if !supportLists]-->7.   <!--[endif]-->message.addData('title','My Game');

<!--[if !supportLists]-->8.   <!--[endif]-->message.addData('message','Your turn!!!!');

<!--[if !supportLists]-->9.   <!--[endif]-->message.addData('msgcnt','1');

<!--[if !supportLists]-->10.  <!--[endif]-->message.collapseKey = 'demo';

<!--[if !supportLists]-->11.  <!--[endif]-->message.delayWhileIdle = true;

<!--[if !supportLists]-->12.  <!--[endif]-->message.timeToLive = 3;

<!--[if !supportLists]-->13.  <!--[endif]--> 

<!--[if !supportLists]-->14.  <!--[endif]-->// At least one token is required - each app registers a different token

<!--[if !supportLists]-->15.  <!--[endif]-->registrationIds.push('APA91bFobAwN7P3Okxy2al8RI12VcJFUS-giXWTOoWXIObtSPOE1h7FuH1VPLBPgshDI_Fp7aIYVET-ssvGUErlWYA0cKPGhoXT1daqyDsEfem9ZtgZNRhQFv7kLCIVSigYlpMluToPiSHSsFSEdtCDfKoOZqNPgfs');

<!--[if !supportLists]-->16.  <!--[endif]--> 

<!--[if !supportLists]-->17.  <!--[endif]-->/**

<!--[if !supportLists]-->18.  <!--[endif]-->* Parameters: message-literal, registrationIds-array, No. of retries, callback-function

<!--[if !supportLists]-->19.  <!--[endif]-->*/

<!--[if !supportLists]-->20.  <!--[endif]-->sender.send(message, registrationIds, 4, function (result) {

<!--[if !supportLists]-->21.  <!--[endif]-->    console.log(result);

<!--[if !supportLists]-->22.  <!--[endif]-->});

<!--[if !supportLists]-->23.  <!--[endif]-->/** Use the following line if you want to send the message without retries

<!--[if !supportLists]-->24.  <!--[endif]-->sender.sendNoRetry(message, registrationIds, function (result) {

<!--[if !supportLists]-->25.  <!--[endif]-->console.log(result); });

<!--[if !supportLists]-->26.  <!--[endif]-->**/

复制代码





<!--[if !supportLineBreakNewLine]-->
<!--[endif]-->

要为title键和message键明确地指定titlemessage,因为程序的插件将会在GCMIntentService.java中查找它:


<!--[if !supportLineBreakNewLine]-->
<!--[endif]-->

<!--[if !supportLists]-->1.   <!--[endif]-->Bundle extras = intent.getExtras();

<!--[if !supportLists]-->2.   <!--[endif]-->    if (extras != null) {

<!--[if !supportLists]-->3.   <!--[endif]-->        try {

<!--[if !supportLists]-->4.   <!--[endif]-->          String title = extras.getString("title");

<!--[if !supportLists]-->5.   <!--[endif]-->          String message = extras.getString("message");

<!--[if !supportLists]-->6.   <!--[endif]-->          ....

<!--[if !supportLists]-->7.   <!--[endif]-->        }

<!--[if !supportLists]-->8.   <!--[endif]-->     }

复制代码





<!--[if !supportLineBreakNewLine]-->
<!--[endif]-->

折叠键

根据Android的开发文档,当你定义一个折叠键时,它只会分发给你最后收到的通知和一个给定的折叠键,为了不让用户被过多的通知烦扰例如像体育比赛中的分数。



 

6.title键和message键指定明确的titlemessage。注意在弹出列表中所出现的状态栏通知(如果被受理),像图7所示



 

7.状态栏通知在弹出框中显示


<!--[if !supportLineBreakNewLine]-->
<!--[endif]-->

其它可供选择的插件

迟点我将会解释那些你在Android上使用Cordova去推送通知时要用到的资料,你可能会想到在GitHub那里的另外一个插件。这个插件是为了能够让捏充分利用PushWoosh去推送通知而设计出来的,这个我在我的博文中发布过,使用Pushwoosh让你能够简单通过PhoneGap去推送通知。这个插件的APIIOS上的Cordova 通知推送插件类似,有趣的是,当我测试它的时候,即使不在PushWoosh服务器的环境下,我的Node.js服务仍然能够接收到所推送的消息。此外,我并不需要添加任何原生的Java代码,能够让上面的状态栏通知显示。


<!--[if !supportLineBreakNewLine]-->
<!--[endif]-->

下一步

以下的这些连接你可能需要点击进去看一下

<!--[if !supportLists]-->·         <!--[endif]-->  通过Pushwoosh去利用PhoneGap去推送通知

<!--[if !supportLists]-->·         <!--[endif]-->  Cordovapush项目——依据node-apnnode-gcm的跨平台的推送服务。

<!--[if !supportLists]-->·         <!--[endif]-->  Urban Airship 通知推送服务器——融合了PhoneGap

 


<!--[if !supportLineBreakNewLine]-->
<!--[endif]-->

这些只能在CreativeCommons Attribution-Noncommercial-Share Alike 3.0 Unported License的许可下被运用到。权限只能在许可范围内,关于这个例子的代码(包括项目中用到的)都可以在Adobe上找到。

原文链接:http://www.adobe.com/devnet/phonegap/articles/android-push-notifications-with-phonegap.html

  • 大小: 33 KB
  • 大小: 21.9 KB
  • 大小: 18.5 KB
  • 大小: 33.3 KB
  • 大小: 18.5 KB
  • 大小: 37.5 KB
  • 大小: 38.4 KB
分享到:
评论

相关推荐

    phonegap推送

    PhoneGap推送技术是移动应用开发中的一个重要组成部分,它允许开发者为基于PhoneGap的混合应用程序实现通知功能。PhoneGap是一个开放源代码的框架,它利用HTML、CSS和JavaScript来构建跨平台的原生移动应用。通过...

    phoneGap极光推送插件。

    总的来说,PhoneGap和极光推送的结合使用,使得开发者可以轻松地为跨平台应用实现推送通知功能,从而提高用户体验和应用的活跃度。在实际开发中,开发者需要根据应用的具体需求,调整和扩展上述步骤,以实现更丰富的...

    Phonegap Android 系统推送例子

    在这个“Phonegap Android 系统推送例子”中,我们将深入探讨如何在Android平台上使用PhoneGap实现系统推送功能,这涉及到Java语言的运用以及与PhoneGap框架的集成。 首先,我们需要理解什么是系统推送。在移动应用...

    phonegap+websocket+tomcat实现推送功能

    在这个项目中,我们将PhoneGap、WebSocket和Tomcat结合,以实现在Android设备上的实时推送功能。 首先,要理解PhoneGap如何与WebSocket交互。PhoneGap应用本质上是包装在原生移动应用壳中的一个Web应用,因此可以...

    phonegap 百度云推送、扫描二维码、自动更新插件

    本项目涉及PhoneGap与百度云推送的集成,以及二维码扫描和自动更新功能的实现。 首先,关于“百度云推送”,它是百度提供的一种针对移动应用的消息推送服务。通过集成百度云推送SDK,开发者可以向Android和iOS设备...

    phoneGap实现android平台应用

    7. **添加PhoneGap插件**:根据应用需求,可能需要添加额外的PhoneGap插件,如推送通知、分享功能等。使用`phonegap plugin add &lt;plugin_name&gt;`命令安装。 8. **测试和调试**:在Eclipse或Android Studio中,通过...

    phonegap插件包Android版本

    在GitHub、npm.js等平台上,你可以找到许多现成的插件,例如推送通知、社交分享、地图服务等。 9. **持续集成与部署**:对于大型项目,可以结合持续集成工具如Jenkins或Travis CI,自动化构建和部署PhoneGap应用,...

    jpush-phonegap-plugin-master

    在移动应用开发中,极光推送(JPush)是一个广泛使用的第三方推送服务,它能够帮助开发者实现消息推送、用户互动等功能。"jpush-phonegap-plugin-master" 是一个针对 PhoneGap 框架的 JPush 插件,适用于 Ionic2 ...

    phonegap android demo

    PhoneGap的插件系统使得开发者可以扩展应用的功能,例如添加蓝牙支持、推送通知等。 总的来说,PhoneGap Android Demo是一个实践教程,展示了如何在Android平台上利用PhoneGap开发混合型应用。通过学习和研究这个...

    用c#实现安卓 消息推送

    本篇文章将详细讲解如何使用C#通过PhoneGap框架来实现在Android平台上进行消息推送。 PhoneGap是一个开源的跨平台移动应用开发框架,它允许开发者使用HTML5、CSS3和JavaScript来构建原生的移动应用,同时还能通过...

    PhoneGap-Push-Notification-in-Android:Android 中的 PhoneGap 推送通知

    Android 中的 PhoneGap 推送通知 这里展示的是PhoneGap inn Android的Push Notification示例,这里我们也附上了PHP中的服务器代码 脚步 转到 Goggle 开发者控制台并创建一个 App 1.1。 开启 Goggle Cloud 消息 1.2。...

    PhoneGap demo

    4. **PhoneGap插件**:为了访问Android的特定功能,如访问本地文件系统、推送通知、蓝牙等,开发者需要编写或使用已有的PhoneGap插件。这些插件是连接JavaScript和Android原生代码的桥梁。 5. **Android SDK集成**...

    Phonegap 自动更新 updateApp Android

    这种机制对于开发者来说,能够方便地推送修复、新功能,而对用户而言,提高了更新的便捷性。 二、`updateApp`插件介绍 `updateApp`是专为PhoneGap Android应用程序设计的自动更新插件,它提供了一个简单的API,...

    PhoneGap与android交互及 JQuery Mobile+ iscroll 列表滚动条的实现

    例如,通过JavaScript接口调用Android的特定功能,如存储数据到设备、发送推送通知或者访问硬件传感器。开发者需要理解Android的Activity生命周期以及PhoneGap的事件模型,以便在正确的时间触发相应的操作。 JQuery...

    phonegap 安卓

    5. **插件**:PhoneGap的扩展功能主要通过插件实现,例如访问设备的联系人、存储、推送通知等。开发者可以自定义插件或者使用社区提供的插件。 6. **构建与打包**:开发者使用PhoneGap Build服务或者本地安装的...

    jpush-phonegap-plugin

    3. **用户分组**:允许根据用户标签进行群体推送,实现精准营销。 4. **统计分析**:提供详尽的数据分析报告,帮助优化推送策略。 5. **消息送达状态**:反馈消息送达、点击状态,便于评估推送效果。 **PhoneGap...

    parse-push-plugin, 在分析平台上,为 Cordova/Phonegap/ionic 推送通知插件.zip

    parse-push-plugin, 在分析平台上,为 Cordova/Phonegap/ionic 推送通知插件 Parse.Push 插件Cordova/Phonegap/ionic.的Parse.Push 插件,用于宿主 Parse.com 和开放源码解析服务器。高光工作在 Parse.com 和解析...

    ionic集成极光推送

    "Ionic集成极光推送"这个主题涉及到将极光推送服务(Aurora IM Service,简称JPush)整合到基于Ionic的项目中,以实现推送通知功能。极光推送是中国一家知名的推送服务提供商,广泛应用于Android和iOS平台,为开发者...

    phoneGap手机安装apk

    如果你想要直接安装apk文件,可以找到生成的`platforms/android/build/outputs/apk`目录下的apk文件,通过adb(Android Debug Bridge)工具将其推送到设备上,或者通过USB连接设备并在设置中开启未知来源安装权限,...

    phonegap开发示例服务器端开发

    此外,还可以利用PhoneGap的Plugin机制扩展功能,如添加推送通知、支付接口或其他定制服务。 在开发过程中,有一些重要的建议需要注意: - 熟悉各个平台的特性和限制,因为虽然PhoneGap提供了跨平台的能力,但每个...

Global site tag (gtag.js) - Google Analytics