Swift - JPush極光推送的使用4(根據Tag標籤,給同一類別使用者發推送)
Swift - JPush極光推送的使用4(根據Tag標籤,給同一類別使用者發推送)
一、標籤(tag)介紹
(1)前文講的別名(alias)是為了對每一個使用者進行標識。而標籤(tag)是用來將使用者分類分組,這樣便於批量推送訊息。
(2)可為每個使用者打多個標籤。(比如: vip、women、game 等等)
(3)不同應用程式、不同的使用者,可以打同樣的標籤。
四、完整程式碼
1,客戶端程式碼
(2)ViewController.swift(標籤註冊相關)
2,服務端程式碼(index.php)
(1)前文講的別名(alias)是為了對每一個使用者進行標識。而標籤(tag)是用來將使用者分類分組,這樣便於批量推送訊息。
(2)可為每個使用者打多個標籤。(比如: vip、women、game 等等)
(3)不同應用程式、不同的使用者,可以打同樣的標籤。
(4)每次呼叫至少設定一個 tag。(這個會覆蓋之前的設定,不是新增。)
(5)使用空陣列或列表表示取消之前的設定。
二、標籤使用要求
(5)使用空陣列或列表表示取消之前的設定。
二、標籤使用要求
(1)有效的標籤組成:字母(區分大小寫)、數字、下劃線、漢字。
(2)限制:每個 tag 命名長度限制為
40 位元組,最多支援設定 100 個
tag,但總長度不得超過 1K 位元組。(判斷長度需採用
UTF-8 編碼)
(3)單個裝置最多支援設定 100 個
tag。App 全域性
tag 數量無限制。
三、標籤使用的樣例說明
下面給某些標籤下關聯的所有使用者傳送通知訊息。
下面給某些標籤下關聯的所有使用者傳送通知訊息。
1,iOS客戶端介面
客戶端在啟動後,我們可以選擇我們關注的新聞類別(每個類別對應一個標籤)。點選“註冊標籤”按鈕後,便呼叫
API 將該裝置與選擇的標籤關聯起來。
2,服務端介面
我們輸入標籤(如果給多個標籤傳送,則用逗號隔開)、訊息文字,點選“推送”按鈕後,即可給這些標籤對應的所有使用者傳送訊息。
3,客戶端顯示效果
可以看到關聯了這些標籤的裝置能收到訊息,而其他的裝置是收不到的。
四、完整程式碼
1,客戶端程式碼
(1)AppDelegate.swift(這個同之前文章裡的一樣,沒有改變。本文程式碼已升級至
Swfit3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
|
import
UIKit @UIApplicationMain class
AppDelegate : UIResponder ,
UIApplicationDelegate
{ var
window: UIWindow ? func
application(_ application: UIApplication , didFinishLaunchingWithOptions launchOptions: [ UIApplicationLaunchOptionsKey :
Any ]?) ->
Bool { //通知型別(這裡將聲音、訊息、提醒角標都給加上) let
userSettings = UIUserNotificationSettings (types: [.alert, .badge, .sound], categories:
nil ) if
(( UIDevice .current.systemVersion
as NSString ).floatValue >= 8.0) { //可以新增自定義categories JPUSHService .register(forRemoteNotificationTypes: userSettings.types.rawValue, categories:
nil ) } else
{ //categories 必須為nil JPUSHService .register(forRemoteNotificationTypes: userSettings.types.rawValue, categories:
nil ) } // 啟動JPushSDK JPUSHService .setup(withOption:
nil , appKey:
"7b96331738ea713195698fd" , channel:
"Publish Channel" , apsForProduction:
false ) return
true } func
application(_ application: UIApplication , didRegisterForRemoteNotificationsWithDeviceToken deviceToken:
Data ) { //註冊 DeviceToken JPUSHService .registerDeviceToken(deviceToken) } func
application(_ application: UIApplication , didReceiveRemoteNotification userInfo: [ AnyHashable
: Any ], fetchCompletionHandler completionHandler:
@escaping ( UIBackgroundFetchResult ) ->
Void ) { //增加IOS 7的支援 JPUSHService .handleRemoteNotification(userInfo) completionHandler( UIBackgroundFetchResult .newData) } func
application(_ application: UIApplication , didFailToRegisterForRemoteNotificationsWithError error:
Error ) { //可選 NSLog ( "did Fail To Register For Remote Notifications With Error: \(error)" ) } //.......... } |
(2)ViewController.swift(標籤註冊相關)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
|
import
UIKit class
ViewController : UIViewController
{ @IBOutlet
weak var
switch1: UISwitch ! @IBOutlet
weak var
switch2: UISwitch ! @IBOutlet
weak var
switch3: UISwitch ! @IBOutlet
weak var
textView: UITextView ! override
func viewDidLoad() { super .viewDidLoad() } //按鈕點選 @IBAction
func btnTouchUp(sender:
AnyObject ) { //獲取標籤 var
tags = Set < NSObject >() if
switch1.on { tags.insert( "movie" ) } if
switch2.on { tags.insert( "music" ) } if
switch3.on { tags.insert( "game" ) } //註冊標籤 JPUSHService .setTags(tags, callbackSelector: #selector(tagsAliasCallBack(_:tags:alias:)), object:
self ) } //標籤註冊回撥 func
tagsAliasCallBack(resCode: CInt , tags: NSSet , alias: NSString )
{ textView.text =
"響應結果:\(resCode)" } override
func didReceiveMemoryWarning() { super .didReceiveMemoryWarning() } } |
2,服務端程式碼(index.php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
|
<? //引入程式碼 require 'JPush/autoload.php' ; use JPush \ Client
as JPush ; if (isset($_POST[ "message" ])){ //初始化 $app_key =
"7b528333738ec729165798fd" ; $master_secret =
"32da4e2c36957b247a2c9828" ; $client =
new JPush ($app_key, $master_secret); //將逗號隔開的字串拆分成標籤陣列 $tags = explode( ',' , $_POST[ "tags" ]); //簡單的推送樣例 $result = $client->push() ->setPlatform( 'ios' ,
'android' ) ->addTag($tags) ->setNotificationAlert($_POST[ "message" ]) ->options(array( "apns_production"
=> true
//true表示傳送到生產環境(預設值),false為開發環境 )) ->send(); echo
'Result=' . json_encode($result); } ?> <html> <head> </head> <body> <form action= "index.php"
method= "post" > 標籤:<input type= "text"
name= "tags" /><br> 訊息:<input type= "text"
name= "message" /> <button type= "submit" >推送廣播通知</button> </form> </body> </html> |
原文出自:www.hangge.com 轉載請保留原文連結:http://www.hangge.com/blog/cache/detail_1272.html
相關文章
- 極光推送 tag alias 設定
- JPush極光推送Java伺服器端例項Java伺服器
- Swift3.0整合極光推送Swift
- 快捷地整合極光推送(JPush)到 Laravel 專案中Laravel
- 極光推送-java工具類Java
- 在 Laravel 中使用 極光推送Laravel
- iOS —— 極光推送和極光IMiOS
- 極光推送總結
- iOS 極光推送整合與開發iOS
- Android開發之極光推送的整合Android
- 極光推送—java快速接入Java
- 極光推送證書篇
- iOS極光推送封裝iOS封裝
- 極光筆記|極光推送在APICloud平臺的使用教程筆記APICloud
- iOS-極光推送開發小結iOS
- Laravel 極光推送驅動,使用極光不再那麼麻煩!Laravel
- APP訊息推送 極光推送 示例程式碼APP
- iOS 極光推送遇到的問題iOS
- Flutter應用整合極光推送Flutter
- 適配 iOS 10,極光推送使用者要做這 6 處更改iOS
- 極光推送-服務端端智慧人社訊息推送方式服務端
- 在ionic專案中使用極光推送實現推送 & 伺服器端程式碼伺服器
- 給你的ABAP物件打上標籤(Tag)物件
- 極光推送申請iOS推送證書p12及配置教程iOS
- 極光推送申請iOS推送證書p12及配置流程iOS
- iOS_極光推送的UNNotificationServiceExtension實現富文字iOS
- 極光筆記丨iOS 15推送新特性筆記iOS
- 使用極光推送實現分組傳送和服務端整合服務端
- [外掛擴充套件]APP極光推送外掛!套件APP
- Git 推送和刪除遠端標籤Git
- Git tag標籤與branch分支的區別Git
- Git tag 標籤Git
- 推送標籤到遠端倉庫的步驟
- 多包名打包以及整合“極光推送”的坑點(區別於“多渠道打包”)
- Git tag標籤與branch分支 區別Git
- C#操作Word之 根據標籤名清除標籤內容C#
- iOS .a庫打包成.framework(將極光推送的.a庫打包進framework)iOSFramework
- Golang中struct結構標籤(Tag)的使用GolangStruct