igetui-ruby-nolock 1.2.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 438de2034bbfccc1e7df723a33ba0b9e14c522f8
4
+ data.tar.gz: 20b624128b9effb9546e1434883b73223ac216f3
5
+ SHA512:
6
+ metadata.gz: b39d77f5891a796412386209d559441b12d168a230b943c4e886426f7aaf4d679fbcdde207f2cb2296945609954adcf72d1d04453aa663bddaa24c533452d355
7
+ data.tar.gz: 9821d6b37970f1507e5b9ab7684c0249c5fd68fd8d1d68dbe3e941265a107b182631e12608f2264a523315c31ad2f0ba625b5461cdf51df11016ccdc89be5769
data/.gitignore ADDED
@@ -0,0 +1,46 @@
1
+ .DS_Store
2
+ .rvmrc
3
+ *.gem
4
+ *.rbc
5
+ .bundle
6
+ .config
7
+ .yardoc
8
+ Gemfile.lock
9
+ InstalledFiles
10
+ _yardoc
11
+ coverage
12
+ doc/
13
+ lib/bundler/man
14
+ pkg
15
+ rdoc
16
+ spec/reports
17
+ test/tmp
18
+ test/version_tmp
19
+ tmp
20
+ spec/public
21
+ spec/test.log
22
+ spec/tmp
23
+
24
+ ## Specific to RubyMotion:
25
+ .dat*
26
+ .repl_history
27
+ build/
28
+
29
+ ## Documentation cache and generated files:
30
+ /.yardoc/
31
+ /_yardoc/
32
+ /doc/
33
+ /rdoc/
34
+
35
+ ## Environment normalisation:
36
+ /.bundle/
37
+ /lib/bundler/man/
38
+
39
+ # for a library or gem, you might want to ignore these files since the code is
40
+ # intended to run in multiple environments; otherwise, check them in:
41
+ # Gemfile.lock
42
+ .ruby-version
43
+ .ruby-gemset
44
+
45
+ # unless supporting rvm < 1.11.0 or doing something fancy, ignore this:
46
+ .rvmrc
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in igetui-ruby.gemspec
4
+ gemspec
data/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ The MIT License (MIT)
2
+
3
+ Copyright (c) 2014 Victor Wang
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
data/LICENSE.txt ADDED
@@ -0,0 +1,22 @@
1
+ Copyright (c) 2014 Victor Wang
2
+
3
+ MIT License
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining
6
+ a copy of this software and associated documentation files (the
7
+ "Software"), to deal in the Software without restriction, including
8
+ without limitation the rights to use, copy, modify, merge, publish,
9
+ distribute, sublicense, and/or sell copies of the Software, and to
10
+ permit persons to whom the Software is furnished to do so, subject to
11
+ the following conditions:
12
+
13
+ The above copyright notice and this permission notice shall be
14
+ included in all copies or substantial portions of the Software.
15
+
16
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
20
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
21
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
22
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README.md ADDED
@@ -0,0 +1,136 @@
1
+ # IGeTui::Ruby
2
+
3
+ [个推](http://www.igetui.com/)服务端 ruby-sdk
4
+
5
+ ## Installation
6
+
7
+ Add this line to your application's Gemfile:
8
+
9
+ ```ruby
10
+ gem 'igetui-ruby', require: 'igetui'
11
+ ```
12
+
13
+ And then execute:
14
+
15
+ ```bash
16
+ $ bundle
17
+ ```
18
+
19
+ Or install it yourself as:
20
+
21
+ ```bash
22
+ $ gem install igetui-ruby
23
+ ```
24
+
25
+ ## Usage
26
+
27
+ ### Push Message To Single
28
+
29
+ ```ruby
30
+ pusher = IGeTui.pusher(your_app_id, your_app_key, your_master_secret)
31
+
32
+ # 创建通知模板
33
+ template = IGeTui::NotificationTemplate.new
34
+ template.logo = 'push.png'
35
+ template.logo_url = 'http://www.igetui.com/wp-content/uploads/2013/08/logo_getui1.png'
36
+ template.title = '测试标题'
37
+ template.text = '测试文本'
38
+
39
+ # 创建单体消息
40
+ single_message = IGeTui::SingleMessage.new
41
+ single_message.data = template
42
+
43
+ # 创建客户端对象
44
+ client = IGeTui::Client.new(your_client_id)
45
+
46
+ # 发送一条通知到指定的客户端
47
+ ret = pusher.push_message_to_single(single_message, client)
48
+ p ret
49
+ ```
50
+
51
+ ### Push Message To List
52
+
53
+ ```ruby
54
+ pusher = IGeTui.pusher(your_app_id, your_app_key, your_master_secret)
55
+
56
+ # 创建一条透传消息
57
+ template = IGeTui::TransmissionTemplate.new
58
+ # Notice: content should be string.
59
+ content = {
60
+ action: "notification",
61
+ title: "标题aaa",
62
+ content: "内容",
63
+ type: "article",
64
+ id: "4274"
65
+ }
66
+ content = content.to_s.gsub(":", "").gsub("=>", ":")
67
+ template.transmission_content = content
68
+ # 设置iOS的推送参数,如果只有安卓 App,可以忽略下面一行
69
+ # template.set_push_info("", 1, "这里是iOS推送的显示信息", "")
70
+
71
+ # 创建群发消息
72
+ list_message = IGeTui::ListMessage.new
73
+ list_message.data = template
74
+
75
+ # 创建客户端对象
76
+ client_1 = IGeTui::Client.new(your_client_id_1)
77
+ client_2 = IGeTui::Client.new(your_client_id_2)
78
+ client_list = [client_1, client_2]
79
+
80
+ content_id = pusher.get_content_id(list_message)
81
+ ret = pusher.push_message_to_list(content_id, client_list)
82
+ ```
83
+
84
+ ### Push Message To App
85
+
86
+ ```ruby
87
+ pusher = IGeTui.pusher(your_app_id, your_app_key, your_master_secret)
88
+
89
+ # 创建通知模板
90
+ template = IGeTui::NotificationTemplate.new
91
+ template.logo = 'push.png'
92
+ template.logo_url = 'http://www.igetui.com/wp-content/uploads/2013/08/logo_getui1.png'
93
+ template.title = '测试标题'
94
+ template.text = '测试文本'
95
+
96
+ # 创建APP群发消息
97
+ app_message = IGeTui::AppMessage.new
98
+ app_message.data = template
99
+ app_message.app_id_list = [your_app_id]
100
+
101
+ # 发送一条通知到程序
102
+ ret = pusher.push_message_to_app(app_message)
103
+ p ret
104
+ ```
105
+
106
+ ### Custom Test
107
+
108
+ ```ruby
109
+ require 'rubygems'
110
+ require 'igetui'
111
+
112
+ @pusher = IGeTui.pusher(your_app_id, your_app_key, your_master_secret)
113
+ ret = @pusher.get_client_id_status(your_client_id)
114
+ p ret
115
+ ```
116
+
117
+ ### Auto Test
118
+
119
+ 运行测试之前,请先修改 test/pusher_test.rb 中的相关配置。
120
+
121
+ ```ruby
122
+ rake test
123
+ ```
124
+
125
+ ## Documents
126
+
127
+ * [参数说明](https://github.com/wjp2013/igetui-ruby/wiki/%E5%8F%82%E6%95%B0%E8%AF%B4%E6%98%8E)
128
+ * [模板类型说明](https://github.com/wjp2013/igetui-ruby/wiki/%E6%A8%A1%E6%9D%BF%E7%B1%BB%E5%9E%8B%E8%AF%B4%E6%98%8E)
129
+
130
+ ## Contributing
131
+
132
+ 1. Fork it ( http://github.com/wjp2013/igetui-ruby/fork )
133
+ 2. Create your feature branch (`git checkout -b my-new-feature`)
134
+ 3. Commit your changes (`git commit -am 'Add some feature'`)
135
+ 4. Push to the branch (`git push origin my-new-feature`)
136
+ 5. Create new Pull Request
data/Rakefile ADDED
@@ -0,0 +1,6 @@
1
+ require "bundler/gem_tasks"
2
+ require 'rake/testtask'
3
+
4
+ Rake::TestTask.new do |t|
5
+ t.pattern = "test/*_test.rb"
6
+ end
@@ -0,0 +1,23 @@
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+
5
+ require 'igetui/version'
6
+
7
+ Gem::Specification.new do |spec|
8
+ spec.name = "igetui-ruby-nolock"
9
+ spec.version = IGeTui::VERSION
10
+ spec.authors = ["yone hsiung"]
11
+ spec.email = ["QQ: 171842474"]
12
+ spec.summary = "igetui.com ruby sdk"
13
+ spec.description = "ruby-sdk of igetui.com push notification service"
14
+ spec.homepage = "https://github.com/YoneHsiung/igetui-ruby.git"
15
+ spec.license = "MIT"
16
+ spec.files = `git ls-files -z`.split("\x0")
17
+ spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
18
+ spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
+ spec.require_paths = ["lib"]
20
+ spec.extra_rdoc_files = ["README.md"]
21
+
22
+
23
+ end
@@ -0,0 +1,9 @@
1
+ module IGeTui
2
+ class Client
3
+ attr_accessor :client_id
4
+
5
+ def initialize(client_id)
6
+ @client_id = client_id
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,26 @@
1
+ module IGeTui
2
+ class Message
3
+ attr_accessor :is_offline, :offline_expire_time, :data
4
+
5
+ def initialize
6
+ @is_offline = true
7
+ @offline_expire_time = 1000 * 3600 * 12
8
+ @data = BaseTemplate.new
9
+ end
10
+ end
11
+
12
+ SingleMessage = Class.new(Message)
13
+ ListMessage = Class.new(Message)
14
+
15
+ class AppMessage < Message
16
+ attr_accessor :app_id_list, :phone_type_list, :province_list, :tag_list
17
+
18
+ def initialize
19
+ super
20
+ @app_id_list = []
21
+ @phone_type_list = []
22
+ @province_list = []
23
+ @tag_list = []
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,163 @@
1
+ module IGeTui
2
+ class Pusher
3
+ attr_reader :host, :app_id, :app_key, :master_secret
4
+
5
+ def initialize(host, app_id, app_key, master_secret)
6
+ @host = host
7
+ @app_id = app_id
8
+ @app_key = app_key
9
+ @master_secret = master_secret
10
+ end
11
+
12
+ def push_message_to_single(message, client)
13
+ template = message.data
14
+ data = {
15
+ 'action' => 'pushMessageToSingleAction',
16
+ 'appkey' => app_key,
17
+ 'clientData' => template.get_client_data(self),
18
+ 'transmissionContent' => template.transmission_content,
19
+ 'isOffline' => message.is_offline,
20
+ 'offlineExpireTime' => message.offline_expire_time,
21
+ 'appId' => app_id,
22
+ 'clientId' => client.client_id,
23
+ 'type' => 2, #default is message
24
+ 'pushType' => template.get_push_type
25
+ }
26
+
27
+ http_post_json(data)
28
+ end
29
+
30
+ def push_message_to_list(content_id, clients)
31
+ target_list = clients.inject([]) do |list, cilent|
32
+ list << { 'appId' => app_id, 'clientId' => cilent.client_id }
33
+ end
34
+
35
+ # seems that we miss 'pushType'
36
+ data = {
37
+ 'action' => 'pushMessageToListAction',
38
+ 'appkey' => app_key,
39
+ 'contentId' => content_id,
40
+ 'needDetails' => true,
41
+ 'targetList' => target_list,
42
+ 'type' => 2
43
+ }
44
+
45
+ http_post_json(data)
46
+ end
47
+
48
+ def push_message_to_app(message)
49
+ template = message.data
50
+ data = {
51
+ 'action' => 'pushMessageToAppAction',
52
+ 'appkey' => app_key,
53
+ 'clientData' => template.get_client_data(self),
54
+ 'transmissionContent' => template.transmission_content,
55
+ 'isOffline' => message.is_offline,
56
+ 'offlineExpireTime' => message.offline_expire_time,
57
+ 'appIdList' => message.app_id_list,
58
+ 'phoneTypeList' => message.phone_type_list,
59
+ 'provinceList' => message.province_list,
60
+ 'tagList' => message.tag_list,
61
+ 'type' => 2,
62
+ 'pushType' => template.get_push_type
63
+ }
64
+ http_post_json(data)
65
+ end
66
+
67
+ def stop(content_id)
68
+ data = {
69
+ 'action' => 'stopTaskAction',
70
+ 'appkey' => @appKey,
71
+ 'contentId' => content_id
72
+ }
73
+
74
+ ret = http_post_json(data)
75
+ ret['result'] == 'ok'
76
+ end
77
+
78
+ def get_client_id_status(client_id)
79
+ data = {
80
+ 'action' => 'getClientIdStatusAction',
81
+ 'appkey' => app_key,
82
+ 'appId' => app_id,
83
+ 'clientId' => client_id
84
+ }
85
+ http_post_json(data)
86
+ end
87
+
88
+
89
+ def get_content_id(message)
90
+ template = message.data
91
+ data = {
92
+ 'action' => 'getContentIdAction',
93
+ 'appkey' => app_key,
94
+ 'clientData' => template.get_client_data(self),
95
+ 'transmissionContent' => template.transmission_content,
96
+ 'isOffline' => message.is_offline,
97
+ 'offlineExpireTime' => message.offline_expire_time,
98
+ 'pushType' => template.get_push_type
99
+ }
100
+ ret = http_post_json(data)
101
+ ret['result'] == 'ok' ? ret['contentId'] : ''
102
+ end
103
+
104
+ def cancel_content_id(content_id)
105
+ data = {
106
+ 'action' => 'cancleContentIdAction',
107
+ 'contentId' => content_id,
108
+ }
109
+ ret = http_post_json(data)
110
+ ret['result'] == 'ok'
111
+ end
112
+
113
+
114
+ private
115
+
116
+ def connect
117
+ time_stamp = Time.now.to_i
118
+ sign = Digest::MD5.hexdigest(app_key + time_stamp.to_s + master_secret)
119
+ data = {
120
+ action: 'connect',
121
+ appkey: app_key,
122
+ timeStamp: time_stamp,
123
+ sign: sign
124
+ }
125
+ ret = http_post(data)
126
+ ret['result'] == 'success'
127
+ end
128
+
129
+ def http_post_json(params)
130
+ params['version'] = '3.0.0.0'
131
+ ret = http_post(params)
132
+
133
+ if ret && ret['result'] == 'sign_error'
134
+ connect
135
+ ret = http_post(params)
136
+ end
137
+ ret
138
+ end
139
+
140
+ def http_post(params)
141
+ params['version'] = '3.0.0.0'
142
+ data = params.to_json
143
+
144
+ url = URI.parse(host)
145
+ req = Net::HTTP::Post.new(url.path, initheader = { 'Content-Type' => 'application/json' })
146
+ req.body = data
147
+
148
+ try_time = 0
149
+ begin
150
+ res = Net::HTTP.new(url.host, url.port).start { |http| http.request(req) }
151
+ rescue => e
152
+ try_time += 1
153
+ if try_time >= 3
154
+ raise e
155
+ else
156
+ retry
157
+ end
158
+ end
159
+
160
+ JSON.parse res.body
161
+ end
162
+ end
163
+ end
@@ -0,0 +1,70 @@
1
+ module IGeTui
2
+ class BaseTemplate
3
+ attr_accessor :transmission_type, :transmission_content, :push_info
4
+
5
+ def initialize
6
+ @transmission_type = 0
7
+ @transmission_content = ''
8
+ end
9
+
10
+ def get_transparent(pusher)
11
+ transparent = GtReq::Transparent.new
12
+ transparent.id = ''
13
+ transparent.messageId = ''
14
+ transparent.taskId = ''
15
+ transparent.action = 'pushmessage'
16
+ transparent.actionChain = get_action_chain
17
+ transparent.pushInfo = get_push_info
18
+ transparent.appId = pusher.app_id
19
+ transparent.appKey = pusher.app_key
20
+ transparent
21
+ end
22
+
23
+ def get_action_chain
24
+ raise NotImplementedError, 'Must be implemented by subtypes.'
25
+ end
26
+
27
+ def get_push_type
28
+ raise NotImplementedError, 'Must be implemented by subtypes.'
29
+ end
30
+
31
+ def get_client_data(pusher)
32
+ string = self.get_transparent(pusher).serialize_to_string
33
+ Base64.strict_encode64 string
34
+ end
35
+
36
+ def get_push_info
37
+ @push_info || init_push_info
38
+ end
39
+
40
+ # NOTE:
41
+ # iOS Pusher need the top four fields of 'push_info' are required.
42
+ # options can be includes [:payload, :loc_key, :loc_args, :launch_image]
43
+ # http://docs.igetui.com/pages/viewpage.action?pageId=590588
44
+ def set_push_info(action_loc_key, badge, message, sound, options = {})
45
+ init_push_info
46
+ @push_info.actionLocKey = action_loc_key
47
+ @push_info.badge = badge.to_s
48
+ @push_info.message = message
49
+ @push_info.sound = sound
50
+ @push_info.payload = options[:payload]
51
+ @push_info.locKey = options[:loc_key]
52
+ @push_info.locArgs = options[:loc_args]
53
+ @push_info.launchImage = options[:launch_image]
54
+ # validate method need refactoring.
55
+ # Validate.new.validate(args)
56
+ end
57
+
58
+ private
59
+
60
+ def init_push_info
61
+ @push_info = GtReq::PushInfo.new
62
+ @push_info.message = ''
63
+ @push_info.actionKey = ''
64
+ @push_info.sound = ''
65
+ @push_info.badge = '-1'
66
+ @push_info
67
+ end
68
+
69
+ end
70
+ end
@@ -0,0 +1,60 @@
1
+ module IGeTui
2
+ class LinkTemplate < BaseTemplate
3
+ STRING_ATTRIBUTES = %i(title text logo logo_url url).freeze
4
+ BOOLEAN_ATTRIBUTES = %i(is_ring is_vibrate is_clearable).freeze
5
+
6
+ attr_accessor *STRING_ATTRIBUTES, *BOOLEAN_ATTRIBUTES
7
+
8
+ def initialize
9
+ super
10
+
11
+ STRING_ATTRIBUTES.each { |attr| instance_variable_set("@#{attr}", '') }
12
+ BOOLEAN_ATTRIBUTES.each { |attr| instance_variable_set("@#{attr}", true) }
13
+ end
14
+
15
+ def get_action_chain
16
+ # set actionchain
17
+ action_chain_1 = GtReq::ActionChain.new
18
+ action_chain_1.actionId = 1
19
+ action_chain_1.type = GtReq::ActionChain::Type::Goto
20
+ action_chain_1.next = 10000
21
+
22
+ # notification
23
+ action_chain_2 = GtReq::ActionChain.new
24
+ action_chain_2.actionId = 10000
25
+ action_chain_2.type = GtReq::ActionChain::Type::Notification
26
+ action_chain_2.title = title
27
+ action_chain_2.text = text
28
+ action_chain_2.logo = logo
29
+ action_chain_2.logoURL = logo_url
30
+ action_chain_2.ring = is_ring
31
+ action_chain_2.clearable = is_clearable
32
+ action_chain_2.buzz = is_vibrate
33
+ action_chain_2.next = 10010
34
+
35
+ # goto
36
+ action_chain_3 = GtReq::ActionChain.new
37
+ action_chain_3.actionId = 10010
38
+ action_chain_3.type = GtReq::ActionChain::Type::Goto
39
+ action_chain_3.next = 10030
40
+
41
+ # start web
42
+ action_chain_4 = GtReq::ActionChain.new
43
+ action_chain_4.actionId = 10030
44
+ action_chain_4.type = GtReq::ActionChain::Type::Startweb
45
+ action_chain_4.url = url
46
+ action_chain_4.next = 100
47
+
48
+ # end
49
+ action_chain_5 = GtReq::ActionChain.new
50
+ action_chain_5.actionId = 100
51
+ action_chain_5.type = GtReq::ActionChain::Type::Eoa
52
+
53
+ [action_chain_1, action_chain_2, action_chain_3, action_chain_4, action_chain_5]
54
+ end
55
+
56
+ def get_push_type
57
+ "NotifyMsg"
58
+ end
59
+ end
60
+ end
@@ -0,0 +1,66 @@
1
+ module IGeTui
2
+ class NotificationTemplate < BaseTemplate
3
+ STRING_ATTRIBUTES = %i(title text logo logo_url).freeze
4
+ BOOLEAN_ATTRIBUTES = %i(is_ring is_vibrate is_clearable).freeze
5
+
6
+ attr_accessor *STRING_ATTRIBUTES, *BOOLEAN_ATTRIBUTES
7
+
8
+ def initialize
9
+ super
10
+
11
+ STRING_ATTRIBUTES.each { |attr| instance_variable_set("@#{attr}", '') }
12
+ BOOLEAN_ATTRIBUTES.each { |attr| instance_variable_set("@#{attr}", true) }
13
+ end
14
+
15
+ def get_action_chain
16
+ # set actionchain
17
+ action_chain_1 = GtReq::ActionChain.new
18
+ action_chain_1.actionId = 1
19
+ action_chain_1.type = GtReq::ActionChain::Type::Goto
20
+ action_chain_1.next = 10000
21
+
22
+ # notification
23
+ action_chain_2 = GtReq::ActionChain.new
24
+ action_chain_2.actionId = 10000
25
+ action_chain_2.type = GtReq::ActionChain::Type::Notification
26
+ action_chain_2.title = title
27
+ action_chain_2.text = text
28
+ action_chain_2.logo = logo
29
+ action_chain_2.logoURL = logo_url
30
+ action_chain_2.ring = is_ring
31
+ action_chain_2.clearable = is_clearable
32
+ action_chain_2.buzz = is_vibrate
33
+ action_chain_2.next = 10010
34
+
35
+ # goto
36
+ action_chain_3 = GtReq::ActionChain.new
37
+ action_chain_3.actionId = 10010
38
+ action_chain_3.type = GtReq::ActionChain::Type::Goto
39
+ action_chain_3.next = 10030
40
+
41
+ # appStartUp
42
+ app_start_up = GtReq::AppStartUp.new(android: '', symbia: '', ios: '')
43
+
44
+ # start web
45
+ action_chain_4 = GtReq::ActionChain.new
46
+ action_chain_4.actionId = 10030
47
+ action_chain_4.type = GtReq::ActionChain::Type::Startapp
48
+ action_chain_4.appid = ''
49
+ action_chain_4.autostart = @transmission_type == 1
50
+ action_chain_4.appstartupid = app_start_up
51
+ action_chain_4.failedAction = 100
52
+ action_chain_4.next = 100
53
+
54
+ # end
55
+ action_chain_5 = GtReq::ActionChain.new
56
+ action_chain_5.actionId = 100
57
+ action_chain_5.type = GtReq::ActionChain::Type::Eoa
58
+
59
+ [action_chain_1, action_chain_2, action_chain_3, action_chain_4, action_chain_5]
60
+ end
61
+
62
+ def get_push_type
63
+ "NotifyMsg"
64
+ end
65
+ end
66
+ end