如何使用oracle maf实现推送通知

时间:2016-02-11 07:46:58

标签: oracle oracle-maf

我刚试过oracle maf提供的示例代码用于推送通知。我可以通过它注册但是当我通过消息时我没有收到任何消息。 这是服务器代码。我们可以解释如何在gcm注册。我在那里注册但我也怀疑在那里也没有任何方法可以看到消息收到gcm中的详细信息

  <af:commandButton actionListener="#{bindings.Execute.execute}"
                           text="Refresh"
                           disabled="#{!bindings.Execute.enabled}"
                           id="ctb1" immediate="true"/>
  <af:table value="#{bindings.RegistrationsView1.collectionModel}"
            var="row"
            rows="#{bindings.RegistrationsView1.rangeSize}"
            emptyText="#{bindings.RegistrationsView1.viewable ? 'No data to display.' : 'Access Denied.'}"
            fetchSize="#{bindings.RegistrationsView1.rangeSize}"
            rowBandingInterval="0"
            selectedRowKeys="#{bindings.RegistrationsView1.collectionModel.selectedRow}"
            selectionListener="#{bindings.RegistrationsView1.collectionModel.makeCurrent}"
            rowSelection="single" id="t1"
            partialTriggers="::ctb1" width="633" inlineStyle="height:189px;">
    <af:column sortProperty="DeviceToken" sortable="false"
               headerText="Device Token" id="c1" width="100">
      <af:outputText value="#{row.DeviceToken}" id="ot5"/>
    </af:column>
    <af:column sortProperty="DeviceModel" sortable="false"
               headerText="Device Model" id="c3" width="100">
      <af:outputText value="#{row.DeviceModel}" id="ot4"/>
    </af:column>
    <af:column sortProperty="ApplicationId" sortable="false"
               headerText="Application" id="c5" width="205">
      <af:outputText value="#{row.ApplicationId}" id="ot1"/>
    </af:column>
    <af:column sortProperty="UserId" sortable="false"
               headerText="User Id" id="c2" width="-5">
      <af:outputText value="#{row.UserId}" id="ot3"/>
    </af:column>
    <af:column sortProperty="SenderId" sortable="false"
               headerText="Sender Id" id="c4" width="100">
      <af:outputText value="#{row.SenderId}" id="ot2"/>
    </af:column>
  </af:table>
</af:panelGroupLayout>
<af:panelGroupLayout layout="scroll"
                     xmlns:af="http://xmlns.oracle.com/adf/faces/rich"
                     id="pgl1">
  <af:panelFormLayout id="pfl1" partialTriggers="t1">
    <af:panelLabelAndMessage label="#{bindings.DeviceToken.hints.label}"
                             id="plam4">
      <af:outputText value="#{bindings.DeviceToken.inputValue}"
                     id="ot7"/>
    </af:panelLabelAndMessage>
    <af:panelLabelAndMessage label="#{bindings.DeviceModel.hints.label}"
                             id="plam2">
      <af:outputText value="#{bindings.DeviceModel.inputValue}"
                     id="ot6"/>
    </af:panelLabelAndMessage>
    <af:panelLabelAndMessage label="#{bindings.UserId.hints.label}"
                             id="plam1">
      <af:outputText value="#{bindings.UserId.inputValue}"
                     id="ot9"/>
    </af:panelLabelAndMessage>
    <af:panelLabelAndMessage label="#{bindings.ApplicationId.hints.label}"
                             id="plam3">
      <af:outputText value="#{bindings.ApplicationId.inputValue}"
                     id="ot8"/>
    </af:panelLabelAndMessage>
    <af:inputText label="Message" id="it1"
                  value="#{MessageBean.message}"/>
  </af:panelFormLayout>
  <af:commandButton text="Push Message" id="cb1" 
             actionListener="#{MessageBean.pushMessage}"/>
</af:panelGroupLayout>

2 个答案:

答案 0 :(得分:0)

首先,您将有两个应用程序。服务器应用程序(PushServer)和使用MAF框架(PushDemo)实现的移动应用程序。我相信您在将MAF模块安装到JDeveloper后找到了这些应用程序。

其次,要注册Google Cloud Messaging服务器,请转到this link,编写您的应用名称(默认为PushService)和您的Android软件包名称(示例应用的默认值为com.oraclecorp.internal.maf.PushSample )。您将获得一个 GOOGLE API KEY ,您必须将其设置到PushServer应用程序中,进入MessageBean类(它是一个名为GOOGLE_APIKEY的常量),以及一个您将写入移动应用程序的senderId (进入 adf-config.xml - 它是一个名为gcmSenderId的属性)。

您必须在公共服务器上运行服务器项目(可能是Weblogic)并让您的移动应用程序调用您的servlet所在的URL - 例如: http://www.something.com/PushService-ViewController-context-root/registrations ),然后在您的移动应用程序项目中,在connections.xml下,您有两个必须编辑的字段:

<urlconnection name="SyncService_base_connection" url="http://www.something.com"/>

 <urlconnection name="PushServiceConn" url="http://www.something.com/PushService-ViewController-context-root/registrations"/>

您在设备上启动应用程序,然后检查应用程序是否已注册到数据库中。然后,如果您按下设备,则应直接在Android设备上接收这些通知。

对于APNS流程来说,事情有点复杂,但教程可以帮助你。

谢谢,
勒兹

答案 1 :(得分:0)

在包括Admin Server(在weblogic服务器中)的所有托管服务器上启用JSSE后,上述问题得以解决。