我刚试过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>
答案 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后,上述问题得以解决。