2016-07-19 6 views
0

Ich habe eine iOS-Hybridanwendung geschrieben auf IBM MFP 7.1 mit eckigen. Derzeit versuche ich Push-Benachrichtigungen zu verwenden, aber der Code wird nie in die onReadyToSubscribe-Methode eingegeben.IBM MFP onReadyToSubscribe-Methode heißt nicht

Ich bekomme den ganzen Code aus der Dokumentation über die Push-Benachrichtigungen und immer noch habe ich das Problem.

Meine anwendungs ​​descriptor.xml ist

<application xmlns="http://www.worklight.com/application-descriptor" id="B" platformVersion="7.1.0.00.20151227-1725"> 
<displayName>A</displayName> 
<description>A</description> 
<author> 
    <name>application's author</name> 
    <email>application author's e-mail</email> 
    <homepage>http://mycompany.com</homepage> 
    <copyright>Copyright My Company</copyright> 
</author> 
<mainFile>index.html</mainFile> 
<features/> 
<thumbnailImage>common/images/thumbnail.png</thumbnailImage> 

<ipad bundleId="xxx.xxx.xxx" version="1.0" securityTest="PushSecurityTest" > 
    <worklightSettings include="false"/> 
    <pushSender password="123456"/> 
    <security> 
     <encryptWebResources enabled="false"/> 
     <testWebResourcesChecksum enabled="false" ignoreFileExtensions="png, jpg, jpeg, gif, mp4, mp3"/> 
    </security> 
</ipad> 

main.js die eine Datei, wo wir die Magie

function wlCommonInit() { 

    PushAppRealmChallengeHandler.init(); 

    WL.Client.connect({ 
     onSuccess: connectSuccess, 
     onFailure: connectFailure 
    }); 

    //---------------------------- Set up push notifications ------------------------------- 
    if (WL.Client.Push) { 
     WL.Client.Push.onReadyToSubscribe = function() { 

      WL.SimpleDialog.show("Push Notifications", "onReadyToSubscribe", [ { 
       text : 'Close', 
       handler : function() {} 
       } 
       ]); 

      $('#SubscribeButton').removeAttr('disabled'); 
      $('#UnsubscribeButton').removeAttr('disabled'); 

      WL.Client.Push.registerEventSourceCallback(
       "myPush", 
       "PushAdapter", 
       "PushEventSource", 
       pushNotificationReceived); 
     }; 
    } 
} 

function connectSuccess() { 
    WL.Logger.debug ("Successfully connected to MobileFirst Server."); 
} 

function connectFailure() { 
    WL.Logger.debug ("Failed connecting to MobileFirst Server."); 
    WL.SimpleDialog.show("Push Notifications", "Failed connecting to MobileFirst Server. Try again later.", 
      [{ 
       text : 'Reload', 
       handler : WL.Client.reloadapp 
      }, 
      { 
       text: 'Close', 
       handler : function() {} 
      }] 
     ); 
} 
function loginButtonClicked() { 
    var reqURL = '/j_security_check'; 

    var options = { 
     parameters : { 
       j_username : $('#usernameInputField').val(), 
       j_password : $('#passwordInputField').val() 
     }, 
     headers: {} 
    }; 

    PushAppRealmChallengeHandler.submitLoginForm(reqURL, options, PushAppRealmChallengeHandler.submitLoginFormCallback); 
} 

function isPushSupported() { 
    var isSupported = false; 
    if (WL.Client.Push){ 
     isSupported = WL.Client.Push.isPushSupported(); 
    } 

    alert(isSupported); 
    WL.SimpleDialog.show("Push Notifications", JSON.stringify(isSupported), [ { 
     text : 'Close', 
     handler : function() {}} 
    ]); 
} 

function isPushSubscribed() { 
    var isSubscribed = false; 
    if (WL.Client.Push){ 
     isSubscribed = WL.Client.Push.isSubscribed('myPush'); 
    } 

    WL.SimpleDialog.show("Push Notifications", JSON.stringify(isSubscribed), [ { 
     text : 'Close', 
     handler : function() {}} 
    ]); 
} 

// --------------------------------- Subscribe ------------------------------------ 
function doSubscribe() { 
    WL.Client.Push.subscribe("myPush", { 
     onSuccess: doSubscribeSuccess, 
     onFailure: doSubscribeFailure 
    }); 
} 

function doSubscribeSuccess() { 
    WL.SimpleDialog.show("Push Notifications", "doSubscribeSuccess", [ { 
     text : 'Close', 
     handler : function() {}} 
    ]); 
} 

function doSubscribeFailure() { 
    WL.SimpleDialog.show("Push Notifications", "doSubscribeFailure", [ { 
     text : 'Close', 
     handler : function() {}} 
    ]); 
} 

//------------------------------- Unsubscribe --------------------------------------- 
function doUnsubscribe() { 
    WL.Client.Push.unsubscribe("myPush", { 
     onSuccess: doUnsubscribeSuccess, 
     onFailure: doUnsubscribeFailure 
    }); 
} 

function doUnsubscribeSuccess() { 
    WL.SimpleDialog.show("Push Notifications", "doUnsubscribeSuccess", [ { 
     text : 'Close', 
     handler : function() {}} 
    ]); 
} 

function doUnsubscribeFailure() { 
    WL.SimpleDialog.show("Push Notifications", "doUnsubscribeFailure", [ { 
     text : 'Close', 
     handler : function() {}} 
    ]); 
} 

//------------------------------- Handle received notification --------------------------------------- 
function pushNotificationReceived(props, payload) { 
    WL.SimpleDialog.show("Push Notifications", "Provider notification data: " + JSON.stringify(props), [ { 
     text : 'Close', 
     handler : function() { 
      WL.SimpleDialog.show("Push Notifications", "Application notification data: " + JSON.stringify(payload), [ { 
       text : 'Close', 
       handler : function() {}} 
      ]);  
     }} 
    ]); 
} 

Und die letzte magische js Datei übernimmt die Authentifizierung haben sollte auf dem MFP-Server

var PushAppRealmChallengeHandler = (function(){ 

    var challengeHandler; 

    function init() { 
     challengeHandler = WL.Client.createChallengeHandler("PushAppRealm"); 
     challengeHandler.isCustomResponse = isCustomResponse; 
     challengeHandler.handleChallenge = handleChallenge; 
     challengeHandler.submitLoginFormCallback = submitLoginFormCallback; 
    } 

    function isCustomResponse(response) { 
     if (!response || response.responseText === null) { 
      return false; 
     } 
     var indicatorIdx = response.responseText.search('j_security_check'); 

     if (indicatorIdx >= 0){ 
      return true; 
     } 
     return false; 
    } 

    function handleChallenge(response) { 
     $('#AppBody').hide(); 
     $('#AuthBody').show(); 
     $('#passwordInputField').val(''); 
    } 

    function submitLoginFormCallback(response) { 
     var isLoginFormResponse = challengeHandler.isCustomResponse(response); 
     if (isLoginFormResponse){ 
      challengeHandler.handleChallenge(response); 
     } else { 
      $('#AppBody').show(); 
      $('#AuthBody').hide(); 
      challengeHandler.submitSuccess(); 
     } 
    } 

    function submitLoginForm(url, options, callback) { 
     challengeHandler.submitLoginForm(url, options, callback) 
    } 

    return { 
     init: init, 
     submitLoginForm: submitLoginForm, 
     submitLoginFormCallback: submitLoginFormCallback 
    } 
})(); 

Ich habe das Zertifikat bereits überprüft und es ist in Ordnung, auch ich rede alles um, wenn ich das Zertifikat hinzufüge.

Haben Sie einige Ideen, wo ich ein Problem haben kann? Wann sollte onReadyToSubscribe aufgerufen werden? Handelt es sich um die Authentifizierung der Anwendung?

Vielen Dank im Voraus

+0

Probleme mit Geräten Token von Sandbox-APNs hat wurde heute berichtet. Siehe die folgenden Links: 1) http://stackoverflow.com/questions/38453587/apns-bug-since-today-didregisterforremotenotificationswithdevicetoken-not-gett 2) https://forums.developer.apple.com/message/155239 # 155239 3) https://forums.developer.apple.com/thread/52224 –

+0

Versuchen Sie folgende Ansätze: a) Testen Sie mit einem Produktionszertifikat und Produktions-APNs. b) Wenn das nicht funktioniert, testen Sie mit der verfügbaren Probe unter: https://github.com/MobileFirst-Platform-Developer-Center/EventSourceNotifications/tree/release71 Gibt es einen bestimmten Grund, warum Sie mit Eventsources testen ? Für zukünftige Kompatibilität sollten Sie tagbasierende Benachrichtigungen übernehmen. –

+0

Sie haben Recht mit dem Problem, dass es von Apple war. Heute funktioniert alles wie ein Zauber. Vielen Dank. – m1sh0

Antwort