大家好,
我的域名是ABAP,经过几天对android和Phonegap的研究,最终我们开发了一个支持推送通知的应用程序。
我们的业务要求是,我们有一个车辆审批流程,如果销售顾问给的折扣超过一定金额,经理必须批准折扣。为此,我们使用ABAP代码并在Gateway中创建服务。
注意:您应该对Eclipse中的Android开发有最低限度的了解。
下面是启用推送通知的步骤。
1。创建一个Google API项目,获取Sender Id,API Key,如下链接
入门| Android开发者
2.在SMP中为gateway service URL创建一个应用程序,在Android部分的PUSH选项卡中输入Sender Id,API密钥
在步骤1中获得。
如中所示https://websmp101.sap ag.de/~sapidb/011000358700000038522014E.pdf
我们完成了SMP中的应用程序。
现在我们需要创建一个应用程序,使用以下
a.向SMP注册
b.启用推送通知
c.GCM侦听器
d.和输出应用程序。
1。在eclipse中创建Android应用程序项目AndroidManifest.xml文件添加以下
(将包名称更改为应用程序项目名称)
2。将以下库添加到项目中,这些库可以在mobilesd3\KapselSDK\plugins\文件夹
afariasl-7.00.6169.0.0.0.0.0.0.0
clientsubsubsrll-3.0.1
公共-3.0.0 perflib-1.1.5
请求-3.0.0
sap-e2etrace-2.3.3.13
sqlcipher-android-2.1.1
3。在主活动.java添加以下行以加载我们的HTML。
超级加载URL("文件:///android\u asset/www/索引.html");
有关Phonegap开发的更多详细信息,请点击下面的链接。
Phonegap API文档
现在我们的目标是从JavaScript
4调用java代码。创建推送.js文件和下面的代码,将此文件包含在HTML、javascript部分
var PushNotif=function(){};
cordova.addConstructor文件(函数(){
cordova.addPlugin插件("pushnotif",new pushnotif());
});
PushNotif.prototype.send发送=功能(消息){
cordova.exec公司(function(){},
function(){},
'PushNotif',返现卡,消费返利新模式,
"sendPush",手机网站建站,人工智能是,
[消息];
}
函数sendfedback(){
window.PushNotif.prototype.send("我的消息体");}
5.在res/xml中添加插件/配置.xml
6. 要从JavaScript调用java代码,请使用
window.PushNotif.prototype.send(body);
如果要向java发送数据,可以填写body变量。
7。在包文件夹(src)中创建一个名为PushNotif.java文件
"在这里我们写的是,用SMP注册android设备并启用推送通知。
请查看随附的示例文件"PushNotif.java文件"对于代码
8。请添加GCMIntentService.java文件添加到项目并添加gcminentservice.txt文件代码
注意,大数据存储技术,这里您需要更改GCM发送者ID
并添加C连接实例.java到您的项目
现在我们已经完成了我们的应用程序创建。现在在android设备上安装apk文件。
如果一切顺利,你应该在SMP registrations中看到一个新的注册。
通过使用PostMan Plugin POST方法,你应该能够将数据(享受)发送到你的android设备上。
:8080/通知/车辆批准?数据=享受
现在我们的目标是如何使用ABAP
1调用POST方法调用。在SM59中创建到外部服务器的HTTP连接,给出SMP的URL和SMP凭据
2。找到我们需要向设备发送通知的地方(指哪种状态,如折扣超过10k)
3。写下面的代码发送通知
调用方法cl\u http\u client=>按\u destination创建\u
导出
destination=''到外部服务器的http连接
导入
client=client
异常
destination\u not\u found=1
内部\u错误=2
argument\u not\u found=3
destination\u no\u authority=4
plugin\u not\u active=5
OTHERS=6.
*set http method GET
CALL method client->request->set\u method(
if\u http\u request=>co\u request\u method\u post)。
*set protocol版本
客户端->请求->设置\u版本(
如果\u http \u请求=>co \u协议\u版本\u 1 \u 0)。
*设置请求uri(/[?]
将"/Notification/"connid连接到l\u url中//在connid中给出注册id,在SMP
cl\u http\u utility=>set\u request\u uri(request=client->request
uri=l\u url)中注册的
CALL METHOD client->request->set\u header\u field
EXPORTING
name='X-SMP-GCM-DATA'
value=DATA.
**Send
数据:超时类型i、
超时=100000000.
调用方式客户端->发送
导出
超时=超时
异常
http\通信\失败=1
http\无效\状态=2
http\处理\失败=3
其他=4.
如果sy–subrc0.
数据:错误文本类型字符串,
subrc TYPE i.
CALL METHOD client->get\u last\u error
IMPORTING
code=subrc
message=errortext.
WRITE:/'通信错误(发送)',
/'代码:',subrc,'消息:',errortext.
EXIT.
ENDIF.
receive
CALL METHOD client->receive
EXCEPTIONS
http\U communication\U failure=1
http\U invalid\U state=2
http\U processing\U Faild=3
OTHERS=4.
IF sy–subrc0.
CALL METHOD client->get\U last\U error
IMPORTING
code=subrc
message=errortext.
WRITE:'通信错误(接收)'、
代码:'、subrc、'消息:'、errortext到消息。
退出。
否则。
WRITE:'通知已发送'到消息。
ENDIF.
**关闭
调用方法客户端->关闭
异常
http\u无效状态=1