2017-08-09 27 views
0

我是Swift新手,現在我正在開發一個iOS應用程序,它必須將實時用戶發送給用戶通知。就像聊天應用程序一樣,當用戶收到新消息時,iPhone必須發送通知。在我的情況下,我只需要通知,但他們必須實時。當一個用戶點擊一個按鈕時,另一個用戶會收到通知。我讀過很多文章和問題,但我從來沒有找到一個好例子。我在我的應用程序中安裝了OneSignal和FireBase pod文件,並且可以將其服務器的通知發送到應用程序,但現在我需要在設備之間發送通知。如何使用swift 3將實時設備發送到設備通知?

用下面的代碼我得到的用戶名:

func onOSSubscriptionChanged(_ stateChanges: OSSubscriptionStateChanges!) { 
    if !stateChanges.from.subscribed && stateChanges.to.subscribed { 
     print("Subscribed for OneSignal push notifications!") 
    } 
    print("SubscriptionStateChange: \n\(stateChanges)") 

    //The player id is inside stateChanges. But be careful, this value can be nil if the user has not granted you permission to send notifications. 
    if let playerId = stateChanges.to.userId { 
     print("Current playerId \(playerId)") 
    } 
} 

但我怎麼可以用這個ID發送通知給它。 任何示例或建議將不勝感激。

+0

可能的重複[如何使用Firebase函數向用戶發送FCM?](https://stackoverflow.com/questions/42770005/how-can-i-use-firebase-functions-to-send-fcm - 用戶) – the4kman

+0

爲了將設備發送到設備消息,您需要設置一個web服務來處理您的請求並將必要的數據發送到Firebase服務。 – Barns

+0

我查看了您發送給我的鏈接,但不幸的是,它不能提供對我的問題的答案:( – Dakata

回答

1

我使用了Firebase - 它提供了我需要的所有功能。我沒有調查onesignal。

我會畫出我使用的解決方案。是的,還有其他解決方案。

您將需要一個網絡服務器。像Strato這樣的供應商會這樣做(如果有的話,你甚至可以使用你自己的)。你至少需要一個虛擬服務器。

我使用PHP進行web服務。該web服務將我的消息配置爲發送到iOS和Android設備。由於iOS和Android設備處理某些類型的消息的方式不同,因此您需要確定哪種類型的通知最適合您。

使用我從Firebase獲得的信用額度(密鑰,授權,URL)我創建了一個配置文件,我在所有的Firebase通知腳本中都使用該配置文件。我使用的捲曲與火力地堡服務

事情是這樣的溝通:

$headers = array(); 
$headers[] = 'Content-Type: application/json'; 
$headers[] = 'Authorization: key='.$server_key; 

//Setup curl, add headers and post parameters. 
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");                  
curl_setopt($ch, CURLOPT_POSTFIELDS, $json); 
curl_setopt($ch, CURLOPT_HTTPHEADER,$headers); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 

$error = "0"; 
//Send the request 
$curl_result = curl_exec($ch); 
if($curl_result == FALSE){ 
    $error = curl_error($ch); 
} 

//Close request 
curl_close($ch); 

你將有很多工作要做,然後才能發送--decide送什麼類型的消息的實際消息(數據有效載荷,或只是通知)。然後相應地格式化它。請參閱Firebase文檔!

從您的設備,您將需要與web服務進行通信。爲此,我使用URLRequest與服務器進行通信。決定如何發送請求(我使用POST)並相應地添加您的參數。

您將希望從您的web服務返回響應以迴應您的請求。這通常是使用返回有關消息是否已成功發送的信息的JSON字符串完成的。根據需要在代碼中使用響應,例如。錯誤處理。

是的,這只是一個草圖。這是很多工作!但是,通過自己做,你會學到很多東西。

相關問題