Erlang实现的百度云推送Android服务端实例(二郎系拉面 杭州)学到了

随心笔谈9个月前发布 admin
74 0

start() ->

    inets:start(),

    {Mega,Sec,_}=now(),

    ApiKey=”apikey=aghjklpoikmnbhjklpoijnbfd”,%%用户的APIkey

    %% 我的设备

    % Channel_Id=”channel_id=1234567890098765432″,%% 用户的某一设备channelid,也就是客户端demo安装在的手机的channelid

    %% 模拟器

    Channel_Id=”channel_id=3959774938927755088″,%%客户端模拟器的channelid

    Device_Type=”device_type=3″,%%类型,细节在官方文档中查看,1:浏览器设备;2:PC设备;3:Android设备;4:IOS设备;5:Windows phone设备

    Message_Type=”message_type=1″,%% 0:消息;1:通知;默认为0

    TitleStr=” :kkkk,嘎嘎嘎阿 达航空 件阿 斯顿,,,,哈哈哈,erlang”,

    DescriptionStr=”行不:行啊!”,

    Messages0=”messages={“title”:””,

    Messages1=TitleStr,

    Messages2=””,”description”:””,

    Messages3=DescriptionStr,

    Messages4=””,”notification_builder_id”:0,”

    ++ “”notification_basic_style”:2,”open_type”:2,”url”:””,”user_confirm”:0,”pkg_content”:””,”custom_content”:””}”,

    Messages=Messages0 ++ Messages1 ++ Messages2 ++ Messages3 ++ Messages4,

    Method=”method=push_msg”,

    Msg_keys=”msg_keys=erlang_keys”,

    Push_Type=”push_type=1″,

    Time=”timestamp=”++ integer_to_list((Mega * 1000000 + Sec)),

    User_Id=”user_id=213123123″,%%用户的userid

    Url=”http://channel.api.duapp.com/rest/2.0/channel/channel”,

    Http_Method=”POST”,

    SecretKey=”123weqwe12wq12eqweqweqwe”,%%用户的secretekey

    Str0=Http_Method ++ Url ++ ApiKey ++ Channel_Id ++ Device_Type ++ Message_Type ++ Messages0,

    Str1=Messages2,

    Str2=Messages4 ++ Method ++ Msg_keys ++ Push_Type ++ Time ++ User_Id ++ SecretKey,

    TitleBin=list_to_binary(TitleStr),

    TIntegerU=unicode:characters_to_list(TitleBin,utf8),

    TChanges=utf8(TIntegerU,[]),

    Title_Utf8=

      lists:foldl(fun(Change,Acc) ->

        case Change of

          [Term] when Term >=$a, Term=< $z ->

            Acc ++ Change;

          [Term] when Term >=$A, Term=< $Z ->

            Acc ++ Change;

          [Term] when Term >=$0, Term=< $9 ->

            Acc ++ Change;

          [Term] when Term=:=$. ->

            Acc ++ Change;

          [Term] when Term=:=$_ ->

            Acc ++ Change;

          [Term] when Term=:=$- ->

            Acc ++ Change;

          [Term] when Term=:=32 ->

            Acc ++ [43];

          _ ->

            Acc ++ list_to_hex_s(Change)

        end

      end,[],TChanges),

    DesBin=list_to_binary(DescriptionStr),

    DIntegerU=unicode:characters_to_list(DesBin,utf8),

    DChanges=utf8(DIntegerU,[]),

    Des_Utf8=

      lists:foldl(fun(Change,Acc) ->

        case Change of

          [Term] when Term >=$a, Term=< $z ->

            Acc ++ Change;

          [Term] when Term >=$A, Term=< $Z ->

            Acc ++ Change;

          [Term] when Term >=$0, Term=< $9 ->

            Acc ++ Change;

          [Term] when Term=:=$. ->

            Acc ++ Change;

          [Term] when Term=:=$_ ->

            Acc ++ Change;

          [Term] when Term=:=$- ->

            Acc ++ Change; 

          _ ->

            Acc ++ list_to_hex_s(Change)

        end

      end,[],DChanges),

    StrValue=escape_uri(Str0) ++ Title_Utf8 ++ escape_uri(Str1) ++ Des_Utf8 ++ escape_uri(Str2),

    Md5Str=md5_hex(StrValue),

    Sign=”sign=” ++ Md5Str,

    PostInfo=ApiKey ++ “&” ++ Sign ++ “&” ++ User_Id ++ “&”

    ++ Channel_Id ++ “&” ++ Device_Type ++ “&” ++ Message_Type ++ “&” ++ Messages

    ++ “&” ++ Method ++ “&” ++ Msg_keys ++ “&” ++ Push_Type ++ “&” ++ Time,

    timer:sleep(30*1000),

    Result=httpc:request(post,{Url,[],”application/x-www-form-urlencoded”,PostInfo},[],[]),

    case Result of

      {ok,{ ->

        nothing;

      _ ->

        io:format(“Result:~p~n”,[Result])

    end.

© 版权声明

相关文章