如何解决如何在ejabberd上使用FCM连接和发送推送通知?
我正在尝试使用FCM向Android客户端发送推送通知。我点击了以下链接: https://github.com/vkatsuba/epns ,但收到以下错误:异常错误:未定义的函数epns:push / 2 这是我的代码:```
-behavIoUr(gen_mod).
-export([start/2,stop/1,mod_options/1,mod_doc/0,depends/2,create_message/1,post_offline_message/3]).
-include("/home/faiqkhan/ejabberd-20.07/lib/fast_xml-1.1.43/include/fxml.hrl").
-include("/home/faiqkhan/ejabberd-20.07/lib/ejabberd-20.07/include/logger.hrl").
-include("/home/faiqkhan/ejabberd-20.07/lib/ejabberd-20.07/include/translate.hrl").
start(_Host,_Opt) ->
?INFO_MSG("mod_http_offline loading",[]),ejabberd_hooks:add(offline_message_hook,_Host,?MODULE,create_message,0).
stop (_Host) ->
?INFO_MSG("stopping mod_http_offline",ejabberd_hooks:delete(offline_message_hook,0).
create_message({_Action,Packet} = Acc) ->
% ?INFO_MSG("Packet details: ~p",[Packet]),EncodedData = xmpp:encode(Packet),% ?INFO_MSG("Encoded Packet: ~p",[EncodedData]),{value,To} = fxml:get_tag_attr(<<"to">>,EncodedData),From} = fxml:get_tag_attr(<<"from">>,Body = fxml:get_path_s(EncodedData,[{elem,<<"body">>},cdata]),To_id = lists:nth(1,string:lexemes(To,"@")),From_id = lists:nth(1,string:lexemes(From,?INFO_MSG("To id: ~p",[To_id]),?INFO_MSG("From id: ~p",[From_id]),?INFO_MSG("PacketsBody ~p",[Body]),post_offline_message(From_id,To_id,Body),Acc.
post_offline_message(From,To,Body) ->
?INFO_MSG("Posting From ~p To ~p Body ~p~n",[From,Body]),?INFO_MSG("post request sent (not really yet)",FCMData = #{
key => "fcm-key",url => "https://fcm.googleapis.com/fcm/send",playload => #{
to => <<"rid">>,priority => <<"high">>,data => #{
<<"title">> => <<"Some Title">>,<<"some_custom_field">> => true
}
}
},epns:push(fcm,FCMData).
解决方法
异常错误:未定义的功能epns:push / 2
这意味着Erlang找不到具有定义的功能push/2
的文件epns.beam。
据我所见,该模块定义并正确导出了功能,https://github.com/vkatsuba/epns/blob/master/src/epns.erl
所以可能的问题是您忘记了一些步骤:
- 使用与运行ejabberd相同的Erlang版本编译该epns库
- 将* .beam文件复制到erlang可以找到它们的路径(例如,将这些文件与所有其他ejabberd * .beam文件一起复制)
如果尝试将epns库作为依赖项添加到项目中,则还需要更新rebar.config
和*.app.src
文件。因此,这里是rebar3项目的步骤:
步骤1 -在项目中编辑文件rebar.config
:
...
{deps,[
...
{epns,{git,"git://github.com/vkatsuba/epns.git",{branch,"master"}}},...
]}.
...
步骤2 -编辑文件*.app.src
:
...
{applications,[
...,epns,...
]},...
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。