2013-11-05 20 views
1

我有一個本機應用程序,它正在訂閱/取消訂閱併成功推送通知,但是,該API似乎沒有傳入我正在使用的WLPushOptions對象。未在WLPush上傳遞的WLPushOptions訂閱

在我的obj C代碼調用:

NSLog(@"Trying to subscribe ..."); 
id options = [WLPushOptions new]; 
[options addSubscriptionParameter:@"param3" :@"Testing3"]; 

NSLog(@"Connecting to server and initializing push notification … "); 

ReadyToSubscribeListener *readyToSubscribeListener = [[ReadyToSubscribeListener alloc] initWithContext:ctx]; 
readyToSubscribeListener.alias = @"iOSPushAlias"; 
readyToSubscribeListener.adapterName = @"PushAdapter"; 
readyToSubscribeListener.eventSourceName = @"PushEventSource"; 
NSLog(@"Creating subscribe listener..."); 

MySubscribeListener *mySubscribeListener = [[MySubscribeListener alloc]  initWithContext:ctx];  
[[WLPush sharedInstance]subscribe:@"iOSPushAlias" :options :mySubscribeListener]; 

NSLog(@"Finished subscribe."); 

日誌:

Nov 4 20:29:44 Davids-iPhone-5 xxxx [771] <Warning>: Trying to subscribe ... 
Nov 4 20:29:44 Davids-iPhone-5 xxxx [771] <Warning>:  [WorklightNativeExtensionTemplateiOS] Connecting to server and initializing push notification ... 
Nov 4 20:29:44 Davids-iPhone-5 xxxx [771] <Warning>: Creating subscribe listener... 
Nov 4 20:29:44 Davids-iPhone-5 xxxx [771] <Warning>: Finished subscribe. 
Nov 4 20:29:44 Davids-iPhone-5 xxxx [771] <Warning>: [INFO] Successfully subscribed to alias iOSPushAlias 

然後,在HSQL數據庫日誌(使用本地工作燈開發客戶端):

DELETE FROM NOTIFICATION_DEVICE WHERE ID=91 
INSERT INTO NOTIFICATION_DEVICE VALUES(91,'iOSPushAlias','MYAPPNAME-iOSnative-1.0','XXXXXXXX-0C65-4BEF-BE3E-098B21BDFCEF','{}','Apple','XXXXXXXX324CA75650BB85853B946F3D1D9881E5D2E4F3E02268AA6CAA3254B3','XXXXXXXXXX-debug 1.2.0 (iPhone; iPhone OS 7.0.2; en_US)',91) 
COMMIT 

我已經X'ed了應用程序和訂閱ID。

正如你可以在INSERT語句中看到的那樣,第五個字段(NOTIFICATION_DEVICE表中的OPTIONS字段)正在插入一個空的JSON對象,其中我傳入了鍵「param3」和值「Testing3」,因此,我希望它是:

{'param3':'Testing3'} 

這似乎是原生的iOS API文檔會發生什麼(的NSString參數)到addSubscriptionParameter方法。我對Objective C非常陌生,但是這對我來說看起來是正確的。

任何人都知道我在做什麼錯了?

回答

1

這是一個缺陷,並已記錄。幸運的是有一個簡單的解決方法:

WLPushOptions *options = [WLPushOptions new]; 
options.parameters = [NSMutableDictionary new]; 
[options addSubscriptionParameter:@"param3" :@"Testing3"]; 
+0

解決方法不編譯對我來說,得到錯誤「屬性‘參數’不是類型‘ID’的對象中找到」當我這樣做: ID選項= [新增WLPushOptions]; options.parameters = [NSMutableDictionary new]; – DavidW

+0

這是因爲您已將選項定義爲'id'而非WLPushOptions。我已經用你應該有的東西編輯了上面的答案。 – jnortey

+0

太棒了!這很好用,對不起,我的Obj C並不是那麼棒,我只在這裏編了9天。謝謝! – DavidW