當前位置:成語大全網 - 新華字典 - 有沒有什麽快速的方法可以將Windows PC上的消息遠程推送到IOS手機上?

有沒有什麽快速的方法可以將Windows PC上的消息遠程推送到IOS手機上?

妳的iPhone收到推送消息會怎麽樣?有三種可能性:

應用程序在前臺運行。當妳收到推送消息時,屏幕上不會有顯示,也不會有提示音,但是妳的app代理會收到推送消息。您可以在這裏添加代碼來處理接收到的信息。

應用程序沒有在前臺運行。IPhone可能停留在主界面,或者另壹個應用程序正在運行。會彈出壹個提示窗口,可能會伴有提示音。用戶可以單擊關閉按鈕關閉此窗口,或單擊查看按鈕打開您的應用程序。如果用戶點擊關閉按鈕,妳的應用不會處理推送的信息。

iPhone被鎖定。同樣的提示窗口會彈出壹個提示音,但是這個窗口中不會有關閉和查看按鈕。屏幕解鎖後會自動進入妳的app。

因為app delegate是接收推送信息的地方,所以我們對app的最終更改在AppDelegate.m文件中。我們需要修改兩件事:

應用程序:DidFinishLaunchingwithOptions:函數。如果推送信息到達時妳的app沒有在前臺運行,用戶點擊了彈出窗口中的“查看”按鈕,妳的app會重新運行,這些信息會被註入到應用中:DidFinishLaunchingwithOptions:function作為參數。

應用程序:didreceiveremotenotification:函數。如果信息到達時妳的app正在前臺運行,這個函數就會被調用。在iOS4.0或更高版本中,如果您的應用從暫停狀態進入前臺,也會調用該功能。您可以使用UIApplication的applicationState屬性來檢查您的應用程序是否從掛起狀態中喚醒。

上述兩個函數都有壹個字典參數,它包含JSON格式的推送信息內容。OS幫助我們將JSON格式的信息轉換成Objective-C字典。在didFinishLaunchingWithOptions的return語句前添加以下代碼:function: if (launchOptions!=零)

{

ns dictionary * dictionary =[launch options objectForKey:uiapplicationlaunchoptions sremotenotificationkey];

如果(字典!=零)

{

NSLog(@“從推送通知啟動:%@”,字典);

[self addmessagefromremotenoption:dictionary update ui:NO];

}

}

讓我們確保launchOptions參數不為nil,並且launchOptions包含推送信息。然後調用addmessagefromemotionalization函數來處理這些信息。

將以下函數添加到AppDelegate.m文件中:-(void)application:(ui application *)application did receive remote notification:(ns dictionary *)userinfo。

{

NSLog(@“收到通知:%@”,userInfo);

[self addmessagefromremotenoption:userInfo update ui:YES];

}

這個函數也依賴於AddMessage Fromremotization來完成處理信息的工作。

將以下函數復制粘貼到didFinishLaunchingWithOptions上:function:-(void)AddMessage from motion:(ns dictionary *)UserInfo更新UI: (bool)更新UI。

{

Message * Message =[[Message alloc]init];

message . date =[ns date date];

ns string * alert value =[[userInfo value forkey:@ " APS "]value forkey:@ " alert "];

NSMutableArray * parts =[NSMutableArray array with array:[alert value componentsSeparatedByString:@ ":"]];

message . sender name =[parts objectAtIndex:0];

[部件移除對象索引:0];

message . text =[parts components joinedbystring:@ ":"];

int index =[data model add message:message];

if (updateUI)

[self . chatview controller didSaveMessage:message at index:index];

【消息發布】;

}

我保證這是最後壹點代碼。但是讓我們解釋壹下這個代碼。Message * Message =[[Message alloc]init];

message . date =[ns date date];

首先,我們創建壹個消息對象。我們將提取推送信息的內容,填充到這個對象中,然後將這個對象添加到DataModel中。ns string * alert value =[[userInfo value forkey:@ " APS "]value forkey:@ " alert "];

上面的代碼從推送信息中獲取信息的內容。JSON推送信息的格式是這樣的:{

“aps”:

{

" alert ":"發件人姓名:郵件文本",

“聲音”:“默認”

},

}

服務器將信息內容和信息作者的昵稱放在“alert”欄中。我們對這本詞典的其余部分不感興趣。NSMutableArray * parts =[NSMutableArray array with array:[alert value componentsSeparatedByString:@ ":"]];

message . sender name =[parts objectAtIndex:0];

[部件移除對象索引:0];

message . text =[parts components joinedbystring:@ ":"];

上面的代碼將發送者的昵稱和信息內容分解成壹個消息對象。發件人的昵稱是分號和空格前的字符串。int index =[data model add message:message];

現在我們可以將這個消息對象添加到數據模型中。if (updateUI)

[self . chatview controller didSaveMessage:message at index:index];

最後,我們要求ChatViewController添加這些新信息。但是,如果在didFinishLaunchingWithOptions函數中接收到推送信息,那麽我們就不能刷新這個視圖,因為ChatViewController的表還沒有加載。將此信息添加到視圖中會導致系統崩潰。

僅此而已。編譯並運行現有程序。使用test_message.html中的表發送壹些信息。您應該會看到這些信息氣泡出現在應用程序的聊天視圖中。自定義提示信息

妳應該記得,當我們介紹推送消息時,我們說過妳可以自定義提示設置。例如,當有信息時,您可以播放自定義鈴聲。我把壹個名為beep.caf的音頻文件放在應用程序的resources文件夾中。

打開api.php文件,將以下代碼行放入makePayload()函數中:$payload = ' { " APS ":{ " alert ":" '。$ namejson。:'.$ textjson。“,”聲音“:”默認“}”;

已更改為:$ payload =' {"APS": {"alert ":" '。$ namejson。:'.$ textjson。“,”聲音“:”嗶。caf " } } ';

妳不需要改變app本身的任何代碼,甚至不需要重新編譯。但妳還是應該關閉設備上打開的應用。因為如果我們的app在前臺運行,提示是不會響的。現在提示窗口出現時用test_message.html給app發消息,提示音不壹樣嗎?

您也可以嘗試修改其他選項。比如提供自定義按鈕,或者為app設置少量圖標。(如果妳想試驗少量的圖標,別忘了讓app註冊接收圖標數量。現在我們的app只會有提示音和提示窗口。)

x